Cum se rezolvă eroarea ob_end_flush()?

12 feb. 2017, 07:26:25
Vizualizări: 22K
Voturi: 4

În partea de jos a paginilor mele WP-admin primesc această eroare:

ob_end_flush(): failed to send buffer of zlib output compression (1) in C:\Users\anticaking\Desktop\Website\wordpress\wp-includes\functions.php on line 3718.

Linia 3718:

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

Am eliminat toate plugin-urile și am schimbat temele și tot primesc eroarea, așa că nu pot identifica ce o cauzează. Ce este această eroare și cum o pot rezolva?

3
Comentarii

Posibil duplicat al eroare ob_end_flush când se folosește wpdb în plugin

prosti prosti
12 feb. 2017 12:29:00

Care este versiunea ta de PHP?

prosti prosti
12 feb. 2017 12:29:23

@prosti versiunea 7.0.9

lurning too koad lurning too koad
12 feb. 2017 18:53:49
Toate răspunsurile la întrebare 4
0

Am avut și eu această problemă cu WordPress și nu am reușit să o rezolv corect. Am ajuns la acest hack murdar pentru a preveni afișarea erorii:

// Obține nivelul curent de raportare a erorilor
$e_level = error_reporting();

// Dezactivează raportarea erorilor
error_reporting(0);

ob_start();
echo 'Acesta este un hack oribil';
$buffer_contents = ob_get_clean();
ob_end_flush();

// Resetează nivelul de raportare a erorilor la cel anterior
error_reporting($e_level);

Totul pare să funcționeze conform așteptărilor, dar nu sunt mândru de asta!

11 oct. 2018 16:34:42
0

bool ob_end_flush ( void ) Această funcție va trimite conținutul celui mai de sus buffer de ieșire (dacă există) și va dezactiva acest buffer de ieșire. Dacă doriți să procesați în continuare conținutul buffer-ului, trebuie să apelați ob_get_contents() înainte de ob_end_flush() deoarece conținutul buffer-ului este eliminat după ce ob_end_flush() este apelat.

pentru mai multe informații: http://php.net/manual/en/function.ob-end-flush.php

Încercați aceasta, adaugați acest cod în fișierul functions.php. remove_action( 'shutdown', 'wp_ob_end_flush_all', 1 );

30 dec. 2017 12:36:19
2

Nu aș recomanda dezactivarea completă a funcției wp_ob_end_flush_all(), există un motiv bun pentru care este acolo. În schimb, încercați să o înlocuiți cu următoarele:

/**
 * Funcție corectă ob_end_flush() pentru toate nivelurile
 *
 * Aceasta înlocuiește funcția WordPress `wp_ob_end_flush_all()`
 * cu o variantă care nu cauzează notificări PHP.
 */
remove_action( 'shutdown', 'wp_ob_end_flush_all', 1 );
add_action( 'shutdown', function() {
   while ( @ob_end_flush() );
} );

Am un articol detaliat cu mai multe informații despre ce se întâmplă și de ce aceasta este cea mai bună abordare pentru remediere: Soluție Rapidă pentru Eroarea ob_end_flush() în WordPress

11 dec. 2019 20:58:05
Comentarii

Kevin Leary nu a funcționat pentru mine. Folosesc Wordpress 5.7

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

Cred că este mai degrabă o eroare la nivel de server, nu legată de versiunea WP. Este legată de o bibliotecă PHP de compresie numită zlib.

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

Am încercat o abordare de forță brută care a funcționat (nu sunt mulțumit de ea, dar sper că poate ajuta pe cineva):

În ultima linie a fișierului functions.php din /wp-content/themes/<theme_directory>, adăugați următoarea linie:

ob_get_clean();
13 iun. 2021 17:31:22