在我的WP admin页面底部,我看到了以下内容:
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.
第3718行:
function wp_ob_end_flush_all() {
$levels = ob_get_level();
for ($i=0; $i<$levels; $i++)
ob_end_flush();
}
我已经删除了所有插件并交换了主题,但仍然得到了错误,所以我无法确定是什么导致了它。这是什么?我该如何解决?
最合适的回答,由SO网友:jhob101 整理而成
我在wordpress上也遇到了这个问题,无法正确解决。以这种肮脏的黑客手段结束,以防止错误显示:
// Get the current error reporting level
$e_level = error_reporting();
// Turn off error reporting
error_reporting(0);
ob_start();
echo \'This is a horrible hack\';
$buffer_contents = ob_get_clean();
ob_end_flush();
// Reset error reporting level to previous
error_reporting($e_level);
一切似乎都按预期进行,但我并不为此感到骄傲!
SO网友:Kevin Leary
我不建议禁用wp_ob_end_flush_all()
完全发挥作用,这是一个很好的理由。相反,请尝试将其替换为以下内容:
/**
* 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() );
} );
我写了一篇文章,详细介绍了发生的情况,以及为什么这是解决问题的最佳方法:
Quick Fix for WordPress ob_end_flush() Error