• Hola chicos/as,

    Os pido ayuda para este error que sale:

    Warning: Trying to access array offset on value of type bool in /srv/vhost/artdelbonsai.org/home/html/wp-content/themes/uplift/includes/plugins/aq_resizer-2x.php on line 108

    Warning: Trying to access array offset on value of type bool in /srv/vhost/artdelbonsai.org/home/html/wp-content/themes/uplift/includes/plugins/aq_resizer-2x.php on line 109

    Sale en las paginas de mi web (sino salen los errores es porque solo salen en la visualización desde un smartphone) :

    http://www.artdelbonsai.org/galeria 

    http://www.artdelbonsai.org/activitats

    http://www.artdelbonsai.org/trobades

    http://www.artdelbonsai.org/tallers

    http://www.artdelbonsai.org/esdeveniments

    El archivo que da referencia a los errores es este:

    <?php
    function uplift_aq_resize( $url, $width, $height = null, $crop = null, $single = true ) {

    //screen is 2x so double the size of images
    $width = $width * 2;
    $height = $height * 2;

    $debug_mode = false;

    if (isset($_GET['uplift_debug'])) {
    $debug_mode = $_GET['uplift_debug'];
    }

    if ($debug_mode) {
    echo 'IMAGE DEBUG @2x ------ '."\n";
    }

    /* WPML Fix for Image issue in Different domain per language */
    if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
    global $sitepress;

    //Check the URL format Setting
    $directory_default_language = apply_filters( 'wpml_setting', 0, 'language_negotiation_type' );

    //If it's set as multi-domain, apply the fix
    if($directory_default_language == 2) {
    $url = $sitepress->convert_url($url,$sitepress->get_default_language());
    }
    }

    //validate inputs
    if ( !$url OR !$width ) return false;

    if ( $url == "default" ) {
    $url = get_template_directory_uri()."/images/default-thumb.png";
    $image = array (
    0 => $url,
    1 => '1600',
    2 => '1600'
    );
    return $image;
    }

    //define upload path & dir
    $upload_info = wp_upload_dir();
    $upload_dir = $upload_info['basedir'];
    $upload_url = $upload_info['baseurl'];

    $http_prefix = "http://";
    $https_prefix = "https://";

    /* if the $url scheme differs from $upload_url scheme, make them match
    if the schemes differe, images don't show up. */
    if (!strncmp($url,$https_prefix,strlen($https_prefix))) { //if url begins with https:// make $upload_url begin with https:// as well
    $upload_url = str_replace($http_prefix,$https_prefix,$upload_url);
    }
    elseif (!strncmp($url,$http_prefix,strlen($http_prefix))) { //if url begins with http:// make $upload_url begin with http:// as well
    $upload_url = str_replace($https_prefix,$http_prefix,$upload_url);
    }

    //check if $img_url is local
    if ( !uplift_wpml_activated() ) {
    // if (strpos( $url, home_url() ) === false) {
    // if ($debug_mode) { echo 'media URL not the same as site URL'."\n"; }
    // $image = array (
    // 0 => $url,
    // 1 => $width,
    // 2 => $height
    // );
    // return $image;
    // }
    }

    //define path of image
    $rel_path = str_replace( $upload_url, '', $url);
    $img_path = $upload_dir . $rel_path;

    //check if img path exists, and is an image indeed
    if ( !uplift_wpml_activated() ) {
    if ( !file_exists($img_path) OR !getimagesize($img_path) ) {
    if ($debug_mode) { echo 'file does not exist'."\n"; }
    $image = array (
    0 => $url,
    1 => $width,
    2 => $height
    );
    return $image;
    }
    }

    //get image info
    $info = pathinfo($img_path);
    $ext = $info['extension'];
    $orig_w = 0;
    $orig_h = 0;
    if (file_exists($img_path)) {
    list($orig_w,$orig_h) = getimagesize($img_path);
    }

    //if the image isn't big enough for 2x, put it back to 1x - philj
    if ($width > $orig_w || $height > $orig_h) {
    $width = $width/2;
    $height = $height/2;
    }

    //get image size after cropping
    $dims = image_resize_dimensions($orig_w, $orig_h, $width, $height, $crop);
    $dst_w = $dims[4];
    $dst_h = $dims[5];

    //use this to check if cropped image already exists, so we can return that instead
    $suffix = "{$dst_w}x{$dst_h}";
    $dst_rel_path = str_replace( '.'.$ext, '', $rel_path);
    $destfilename = "{$upload_dir}{$dst_rel_path}-{$suffix}.{$ext}";

    //if orig size is smaller
    if ($width >= $orig_w) {

    if ($debug_mode) { echo 'orig size is smaller'."\n"; }

    if (!$dst_h) :
    //can't resize, so return original url
    if ($debug_mode) { echo 'cant resize'."\n"; }

    $img_url = $url;
    $dst_w = $orig_w;
    $dst_h = $orig_h;

    else :
    //else check if cache exists
    if(file_exists($destfilename) && getimagesize($destfilename)) {
    $img_url = "{$upload_url}{$dst_rel_path}-{$suffix}.{$ext}";
    }
    //else resize and return the new resized image url
    else {

    if (function_exists('wp_get_image_editor')) {

    $editor = wp_get_image_editor($img_path);

    if ($debug_mode) { var_dump($editor); }

    if ( is_wp_error( $editor ) || is_wp_error( $editor->resize( $width, $height, $crop ) ) ) {
    $image = array (
    0 => $url,
    1 => $width,
    2 => $height
    );
    return $image;
    }

    $resized_file = $editor->save();

    if ($debug_mode) { var_dump($resized_file); }

    if(!is_wp_error($resized_file)) {
    $resized_rel_path = str_replace( $upload_dir, '', $resized_file['path']);
    $img_url = $upload_url . $resized_rel_path;
    } else {
    return false;
    }

    }
    }

    endif;

    }
    //else check if cache exists
    else if (file_exists($destfilename) && getimagesize($destfilename)) {

    if ($debug_mode) { echo 'cache exists'."\n"; }

    $img_url = "{$upload_url}{$dst_rel_path}-{$suffix}.{$ext}";
    }
    //else, we resize the image and return the new resized image url
    else {

    if ($debug_mode) { echo 'else - before resize'."\n"; }

    if(function_exists('wp_get_image_editor')) {
    $editor = wp_get_image_editor($img_path);

    if ($debug_mode) { var_dump($editor); }

    if ( is_wp_error( $editor ) || is_wp_error( $editor->resize( $width, $height, $crop ) ) ) {
    $image = array (
    0 => $url,
    1 => $width,
    2 => $height
    );
    return $image;
    }

    $resized_file = $editor->save();

    if ($debug_mode) { var_dump($resized_file); }

    if(!is_wp_error($resized_file)) {
    $resized_rel_path = str_replace( $upload_dir, '', $resized_file['path']);
    $img_url = $upload_url . $resized_rel_path;
    } else {
    if ($debug_mode) { echo 'error with resized file'."\n"; }
    return false;
    }
    } else {
    if ($debug_mode) { echo 'no image editor function'."\n"; }
    }
    }

    //return the output
    if ($single) {
    //str return
    $image = $img_url;
    } else {
    //array return
    $image = array (
    0 => $img_url,
    1 => $dst_w,
    2 => $dst_h
    );
    }

    return $image;
    }
    ?>

    Las lineas 108 y 109 son:

    $dst_w = $dims[4];
    $dst_h = $dims[5];

    Muchas gracias por la ayuda que podáis aportar.

    : )

    • Este debate fue modificado hace 1 mes, 1 semana por kallookoo. Razón: Eliminados los enlaces, al detectar el sistema como spam

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 12 respuestas - de la 1 a la 12 (de un total de 12)
  • Hola,

    La función image_resize_dimensions (https://developer.wordpress.org/reference/functions/image_resize_dimensions/) devuelve false cuando se produce un error. Los que han escrito ese código no lo han tenido en cuenta, y han hecho como si siempre devuelve los tamaños.

    Una de las razones por las que la función devuelve false es cuando el tamaño destino es mayor que el original.

    Saludos.

    Iniciador del debate artdelbonsai

    (@artdelbonsai)

    Muchas Gracias Josemi,

    pero no entiendo mucho de códigos..

    Me podrías decir cómo quedaría?

    Un saludo 😀

    Iniciador del debate artdelbonsai

    (@artdelbonsai)

    Necesito vuestra ayuda Chicos/as pues llevo muchas horas y días y estoy agotado, e recurrido al foro como última opción a solucionarlo.

    Me presté a ayudar a la asociación como voluntario pero no consigo hacerles la web sin estos errores..

    😢

    No es un cambio sencillo. Lo suyo es que el desarrollador del theme corrija el bug. Pero por lo que veo es un theme de themeforest que ya no se vende.

    Tendrías que tener configurado PHP para que no mostrase los mensajes de error a los visitantes. Solo tendrían que verse en el log de errores. Pregúntale a tu hosting como hacerlo.

    Al ser un warming, puede que simplemente No mostrando los warnings puede dar el pego en este caso. Porque veo que las imágenes si se ven.

    Por cierto, como puesto antes, si intenta redimensionar una imagen más pequeña que el tamaño destino, la función falla. Así que si las imágenes originales de la web son más pequeñas, van a fallar.

    Iniciador del debate artdelbonsai

    (@artdelbonsai)

    La opción más fácil es solo poner imágenes más grandes de qué tamaño?

    Si añades al final de la url https://www.artdelbonsai.org/galeria/?uplift_debug=1 te muestra además de los warning la información de debug del tema, y pone «orig size is smaller cant resize». Antes ha puesto 7 veces lo de «cache exists». Por lo que deduzco que es la última imagen la que es más pequeña. Juega con esa hasta que des con el tamaño. En las otras urls puedes hacer algo parecido, poner el parámetro en la url e ir viendo las imágenes concretas que fallan. De ahí sacas un tamaño mínimo.

    O también puedes mirar las opciones de configuración del tema para ver si puedes configurar esa redimensión. Parece tener que ver con generar imágenes 2x para móviles.

    Iniciador del debate artdelbonsai

    (@artdelbonsai)

    Al poner en la barra de dirección: https://www.artdelbonsai.org/galeria/?uplift_debug=1 me sale esto:

    IMAGE DEBUG @1x —— cache exists (2) return output IMAGE DEBUG @1x —— cache exists (2) return output IMAGE DEBUG @1x —— cache exists (2) return output IMAGE DEBUG @1x —— cache exists (2) return output IMAGE DEBUG @1x —— cache exists (2) return output IMAGE DEBUG @1x —— cache exists (2) return output IMAGE DEBUG @1x —— cache exists (2) return output IMAGE DEBUG @1x —— return output

    Quieres decir que la primera imagen por ejemplo estaría bien con este mensaje?:

    IMAGE DEBUG @1x —— cache exists (2) return output

    Y en cambio la última estaría mal por este mensaje?:

    IMAGE DEBUG @1x —— return output

    Iniciador del debate artdelbonsai

    (@artdelbonsai)

    Si no me equivoco debo tener la imagen original subida a medios: mas pequeña, que en donde la pagina donde la incruste, la redimensione mas grande no?

    Moderador kallookoo

    (@kallookoo)

    Hola,

    Disculpad pero aqui tenemos un problema con las nomativas del foro.

    Si estás usando un theme comercial y necesitas soporte debes ir a su canal de soporte oficial. Para dar el mejor servicio a la comunidad WordPress, y generar progreso e innovación, creemos que es importante dirigir a la gente a los sitios oficiales.

    link support

    Además, los voluntarios del foro no tenemos acceso a productos comerciales, así que no sabrían porque tu theme comercial no funciona adecuadamente. Y hay otra razón por la que los voluntarios te dirigen a los vendedores del producto comercial: los vendedores son responsables de dar soporte a su producto comercial.

    Resumiendo; El tema es de pago y desde los foros no se da soporte.

    Ademas de eso. Ese tema ya no existe y segun el changelog hace mas de 3 años que no se actualiza.

    Por lo que mi recomendacion en vez de cerrar la consulta es que remplaces el tema por uno que tenga las mismas o parecedas funcionalidades y no complicarse en adivinar que tamaño necesito, etc… Ya que hoy es eso, pero mañana puede ser un problema mas grave o un incluso una puerta abierta para cualquier hacker

    Iniciador del debate artdelbonsai

    (@artdelbonsai)

    Haber haber,

    !!! Creo que te confundiste, la pagina es para una asociación que no cobra nada!

    El theme si era comercial ya no será si hace mas de 3 años que no se actualiza.

    Me surgen errores por eso mismo, y solo e pedido ayuda ya que precisamente si no se paga nada por este theme, a lo mejor con mas razón tiene esos errores, porque al ya no ser de pago a dejado de tener soporte.

    Ya me gustaría poder cambiar de theme a uno actualizado y gratuito, pero al querer cambiar a otro theme, me da otros errores..

    Moderador kallookoo

    (@kallookoo)

    Hola @artdelbonsai

    Que un tema no este a la venta no significa que sea de uso publico, pero entiende lo siguiente y el motivo de mi anterior respuesta:

    Estos foros lo responden personales por voluntad propia y obviamente no estaran comprando themes y plugins para resolver una duda, como indique en la nota (generica).

    Como en tu caso desaparecio el tema, recomende que por seguridad y compatibilidad con WordPress y todos los plugins actuales no malgastes tu tiempo porque al final tu problema sera mayor y mas cuando lo haces sin animo de lucro.

    Como comentas que lo has probado (que obviamente desconocia) no comentare nada mas al respecto.

    Para ver que imagen o imagenes dan fallo remplaza el siguiente codigo:

    	//get image size after cropping
    $dims = image_resize_dimensions($orig_w, $orig_h, $width, $height, $crop);
    $dst_w = $dims[4];
    $dst_h = $dims[5];

    //use this to check if cropped image already exists, so we can return that instead

    Por este otro:

    //get image size after cropping
    // $dims = image_resize_dimensions($orig_w, $orig_h, $width, $height, $crop);
    // $dst_w = $dims[4];
    // $dst_h = $dims[5];
    $dims = image_resize_dimensions( $orig_w, $orig_h, $width, $height, $crop );
    if ( ! is_array( $dims ) ) {
    if ( $debug_mode ) {
    printf( 'Detectado problema con "%s" y su tamaño "%s (ancho) %s (alto)"', $url, $width, $height );
    }
    return array(
    0 => $url,
    1 => $width,
    2 => $height,
    );
    }
    $dst_w = $dims[4];
    $dst_h = $dims[5];

    //use this to check if cropped image already exists, so we can return that instead

    Activa el debug por url como hicistes antes y obtendras la url de la imagen y los tamaños, cuando falle.

    Con eso ya sabras que imagen es y puedes comparar el tamaño original de otra que no muestre error y sabras que tamaño tiene que tener por defecto.

    O eso he deducido por el codigo

    • Esta respuesta fue modificada hace 1 mes, 1 semana por kallookoo.
    Iniciador del debate artdelbonsai

    (@artdelbonsai)

    Muchas gracias i disculpad, seguiré trabajandolo haber..

Viendo 12 respuestas - de la 1 a la 12 (de un total de 12)
  • Debes estar registrado para responder a este debate.