Soporte » Guías – Resolución de problemas » Notice en functions.php

  • ResueltoModerador almendron

    (@almendron)


    Hoy he activado en el servidor el Debug y me he encontrado con el siguiente mensaje:

    «Notice: ob_end_flush(): failed to send buffer of zlib output compression (1) in /xxxx//wp-includes/functions.php on line 3721»

    La función implicada es:

    /**
     * Flush all output buffers for PHP 5.2.
     *
     * Make sure all output buffers are flushed before our singletons are destroyed.
     *
     * @since 2.2.0
     */
    function wp_ob_end_flush_all() {
    	$levels = ob_get_level();
    	for ($i=0; $i<$levels; $i++)
    		ob_end_flush();
    }

    Por el comentario, parece ser que esta función es solo para PHP 5.2.
    ¿Podría alguien confirmar eso y que por tanto se puede eliminar dicha función?

Viendo 7 respuestas - 1 de 7 (de 7 total)
  • Carlos Longarela

    (@carloslongarela)

    No sé por qué marcan que es para PHP 5.2 ya que ob_end_flush() está disponible desde PHP 4 y ob_get_level() desde PHP 4.2 y ambas siguen vigentes en PHP 7.x

    El problema parece venir de la configuración del php.ini en zlib.output_compression mira si está a On ó 1 (acepta ambas) y prueba a desactivarlos (Off ó 0). Además dicha directiva puede producir problemas de doble compresión ya que si además de que PHP comprima la salida con zlib, al activarlo en Apache desde .htaccess tendremos problemas de páginas incomprensibles debido a doble compresión.

    Moderador almendron

    (@almendron)

    La compresión tipo gzip está activada a nivel servidor. No tengo directiva al respecto ni en el php.ini (en mi servidor se usa .php.ini) ni en el htaccess.

    Carlos Longarela

    (@carloslongarela)

    Lo comprobaste con un phpinfo() para ver seguro que zlib.output_compression está desactivado?

    Moderador almendron

    (@almendron)

    PHP Version 7.0.20
    Tienes razón: está activado y el level es -1

    ¿Y si directamente desactivo esa función?:

    remove_action( 'shutdown', 'wp_ob_end_flush_all', 1 );

    Carlos Longarela

    (@carloslongarela)

    Si, es la solución 2 propuesta aquí: https://gist.github.com/loorlab/028d9fca02e6e4f85d1a

    Moderador almendron

    (@almendron)

    He aplicado la solución que pones y de momento todo correcto. Muchas gracias.

    Moderador almendron

    (@almendron)

    Finalmente, la solución aquí comentada no resolvía todo el problema. Podéis ver la solución definitiva en https://es.wordpress.org/support/topic/function-wp_ob_end_flush_all/

Viendo 7 respuestas - 1 de 7 (de 7 total)
  • El debate ‘Notice en functions.php’ está cerrado a nuevas respuestas.