如何修复ob_end_flush()错误?

时间:2017-02-12 作者:kidcoder SAVE UKRAINE

在我的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();
}
我已经删除了所有插件并交换了主题,但仍然得到了错误,所以我无法确定是什么导致了它。这是什么?我该如何解决?

4 个回复
最合适的回答,由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网友:Madusanka

bool ob\\u end\\u flush(void)此函数将发送最顶层输出缓冲区(如果有)的内容并关闭此输出缓冲区。如果要进一步处理缓冲区的内容,必须在ob\\u end\\u flush()之前调用ob\\u get\\u contents(),因为在调用ob\\u end\\u flush()之后会丢弃缓冲区内容。

更多信息:http://php.net/manual/en/function.ob-end-flush.php

试试这个,把它放到,函数中。php文件。删除\\u操作(“shutdown”、“wp\\u ob\\u end\\u flush\\u all”,1);

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

SO网友:sariDon

我尝试了一种蛮力方法,效果很好(我不满意,但希望这能帮助别人):

functions.php 在wp内容/主题中;主题目录(&U)>,添加以下行:

ob_get_clean();

相关推荐

Debug errors on sidebar

我正在wordpress 3.8上使用一个儿童主题“Twenty14”。在调试模式下,我会遇到以下关于小部件的错误。注意:正在尝试获取\\wordpress\\wp content\\themes\\tema2014\\functions\\widgets中非对象的属性。php在线148update_post_meta($post->ID, \"_sidebar\", $_POST[\"link\"]); 以及注意:未定义的索引:link in\\wordpress\\wp content