You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

处理WordPress ob_end_flush报错后出现wp_ob_end_flush_all未找到错误怎么办

WordPress缓冲区报错排查解决指南

报错根因说明

  • 第一个ob_end_flush() zlib压缩报错:PHP服务端开启的zlib输出压缩功能,与WordPress核心默认的输出缓冲区刷新逻辑冲突,核心函数wp_ob_end_flush_all强制刷新所有层级缓冲区时,和zlib的缓冲区处理规则不匹配触发提示。
  • 第二个call_user_func_array()回调无效报错:你之前的修复操作违规修改了核心文件,要么误删了wp_ob_end_flush_all的核心函数定义,要么移除默认钩子后错误注册了不存在的同名回调,导致WordPress执行shutdown钩子时找不到对应函数。

分步解决步骤

  1. 先修复回调无效报错,恢复核心文件完整性
    不要修改WordPress核心目录(wp-includes、wp-admin)下的任何文件,将你之前改动过的wp-includes/functions.php恢复为对应WordPress版本的原生文件,确保wp_ob_end_flush_all函数定义存在,即可消除第二个警告。

  2. 合规修复zlib压缩缓冲区报错,二选一即可

    • 方案1:关闭PHP的zlib输出压缩
      编辑站点php.ini配置,将zlib.output_compression设置为Off;虚拟主机用户可在站点根目录的.htaccess文件中添加以下配置:
    php_flag zlib.output_compression Off
    
    • 方案2:不关闭zlib,自定义缓冲区刷新逻辑覆盖默认规则
      在站点当前激活主题的functions.php文件,或者自定义功能插件中添加以下代码即可:
    // 移除WordPress默认缓冲区刷新逻辑
    remove_action( 'shutdown', 'wp_ob_end_flush_all', 1 );
    // 新增兼容zlib压缩的缓冲区刷新逻辑
    add_action( 'shutdown', function() {
        $buffer_levels = ob_get_level();
        for ( $i = 0; $i < $buffer_levels; $i++ ) {
            if ( ob_get_length() !== false ) {
                ob_end_flush();
            }
        }
    }, 1 );
    
  3. 验证生效
    清理站点所有缓存(页面缓存、对象缓存、CDN缓存)后刷新页面,两个报错即可全部消除。

注意事项

所有自定义功能修改都要放在主题目录、子主题目录或者自定义插件中,不要改动WordPress核心文件,避免后续版本更新覆盖改动、或引发核心逻辑异常。

内容的提问来源于stack exchange,提问作者Sina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:24:04