Come risolvere l'errore ob_end_flush()?

12 feb 2017, 07:26:25
Visualizzazioni: 22K
Voti: 4

In fondo alle mie pagine WP-admin ottengo questo:

ob_end_flush(): impossibile inviare il buffer della compressione dell'output zlib (1) in C:\Users\anticaking\Desktop\Website\wordpress\wp-includes\functions.php sulla riga 3718.

Riga 3718:

function wp_ob_end_flush_all() {
    $levels = ob_get_level();
    for ($i=0; $i<$levels; $i++)
        ob_end_flush();
}

Ho rimosso tutti i plugin e cambiato i temi ma continuo a ricevere l'errore, quindi non riesco a individuare cosa lo sta causando. Cos'è e come posso risolverlo?

3
Commenti

Possibile duplicato di errore ob_end_flush quando si utilizza wpdb nel plugin

prosti prosti
12 feb 2017 12:29:00

Qual è la tua versione di PHP?

prosti prosti
12 feb 2017 12:29:23

@prosti versione 7.0.9

lurning too koad lurning too koad
12 feb 2017 18:53:49
Tutte le risposte alla domanda 4
0

Anch'io ho avuto questo problema con WordPress e non sono riuscito a risolverlo correttamente. Alla fine ho usato questo sporco trucco per evitare che l'errore venisse mostrato:

// Ottieni il livello corrente di report degli errori
$e_level = error_reporting();

// Disabilita il report degli errori
error_reporting(0);

ob_start();
echo 'Questo è un trucco orribile';
$buffer_contents = ob_get_clean();
ob_end_flush();

// Ripristina il livello precedente di report degli errori
error_reporting($e_level);

Tutto sembra funzionare come previsto, però non ne sono orgoglioso!

11 ott 2018 16:34:42
0

bool ob_end_flush ( void ) Questa funzione invierà il contenuto del buffer di output più in alto (se presente) e disattiverà questo buffer di output. Se desideri elaborare ulteriormente il contenuto del buffer, devi chiamare ob_get_contents() prima di ob_end_flush() poiché il contenuto del buffer viene scartato dopo che ob_end_flush() è stato chiamato.

per maggiori informazioni: http://php.net/manual/en/function.ob-end-flush.php

Prova questo, inserisci questo nel file functions.php. remove_action( 'shutdown', 'wp_ob_end_flush_all', 1 );

30 dic 2017 12:36:19
2

Non consiglierei di disabilitare completamente la funzione wp_ob_end_flush_all(), c'è una buona ragione per cui è presente. Piuttosto, prova a sostituirla con quanto segue:

/**
 * Corretto ob_end_flush() per tutti i livelli
 *
 * Questa sostituisce la funzione WordPress `wp_ob_end_flush_all()`
 * con una versione che non causa avvisi PHP.
 */
remove_action( 'shutdown', 'wp_ob_end_flush_all', 1 );
add_action( 'shutdown', function() {
   while ( @ob_end_flush() );
} );

Ho scritto un articolo con maggiori dettagli su cosa sta succedendo e perché questo è il miglior approccio per risolvere il problema: Soluzione Rapida per l'Errore ob_end_flush() in WordPress

11 dic 2019 20:58:05
Commenti

Kevin Leary non ha funzionato per me. Sto usando Wordpress 5.7

francesco bonetti francesco bonetti
9 apr 2021 22:57:27

Penso sia più un errore a livello di server, non correlato alla versione di WP. È legato a una libreria di compressione PHP chiamata zlib.

Kevinleary.net Kevinleary.net
27 ago 2021 17:22:29
0

Ho provato un approccio a forza bruta che ha funzionato (non ne sono soddisfatto, ma spero che possa essere d'aiuto a qualcuno):

Nell'ultima riga del file functions.php nella directory /wp-content/themes/<theme_directory>, aggiungi la seguente riga:

ob_get_clean();
13 giu 2021 17:31:22