ob_end_flush: come risolvere l’errore su WordPress

ob_end_flush
Visualizzi l'errore ob_end_flush sul tuo sito WordPress? Non disabilitare la compressione zlib, ma segui i miei consigli per risolvere!

Qualche giorno fa, lavorando ad un sito per un cliente, mi è capitato un errore mai visto prima: ob_end_flush(): failed to send buffer of zlib output compression (1). Dopo aver ricercato in lungo ed in largo sul web, sono arrivato ad una soluzione anche grazie a questo provvidenziale link.

Da cosa nasce l’errore ob_end_flush?

L’errore è dovuto da un errore con la compressione zlib. Quando visualizziamo questo errore, probabilmente, un plugin o un blocco del templates che utilizziamo sul nostro sito in WordPress, non viene compresso correttamente: per questo motivo la compressione fallisce, e si genera questa tipologia di errore.

Come posso risolvere l’errore?

Tendenzialmente, ci sono due metodi per risolvere il problema: disattivare la compressione zlib direttamente dal server, oppure intervenire manualmente.

La prima opzione, onestamente, la sconsiglio: disabilitare un’ottima funzione di compressione, per eliminare un warning, non è una pratica corretta. Tramite il file functions.php, però, possiamo far si che l’errore scompaia, inserendo una semplice riga di testo.

L’idea è di sostituire la funzione nativa di WordPress, chiamata wp_ob_end_flush_all(), con una nuova che non darà l’errore ob_end_flush.

/**
 * Proper ob_end_flush() for all levels
 *
 * This replaces the WordPress `wp_ob_end_flush_all()` function
 * with a replacement that doesn't cause PHP notices.
 */
remove_action( 'shutdown', 'wp_ob_end_flush_all', 1 );
add_action( 'shutdown', function() {
   while ( @ob_end_flush() );
} );

Incollate questa porzione di codice nel vostro file functions.php, e come per magia l’errore ob_end_flush scomparirà dal vostro sito web!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *