php - 第0行的PHP缓冲错误<未知>

标签 php error-handling buffering

有人会帮助我提供有关此错误的任何可能信息吗?原因?登录?在哪里寻找/开始?

 Cannot use output buffering in output buffering display handlers in <**Unknown**> on line **0**

示例代码:
function test($b) { return _strrev($b); } 

ob_start("test"); 
echo "123"; 
ob_end_flush();

信息:
  • 这是CentOS 6.7
  • 这是PHP PHP 5.5.32(cli)
  • 这不是Wordpress
  • 这是一个带有伪代码的简单PHP文件(上面)
  • 没有缓存,没有Varnish,没有Nginx,没有自定义 header

  • 谢谢

    最佳答案

    为了使这个问题对其他人有用,我将以答案的形式总结评论部分。
    事实证明,如果在ob_start使用的回调函数中发生编码错误,则会生成此无用的错误消息
    在测试中,我在修改发问者显示的回调函数时无意中犯了一个愚蠢的错误,

    <?php
    function test($b) {
        return str-replace('2', 'XXX', $b);
    }
    
    ob_start("test");
    echo "123";
    ob_end_flush();
    
    请注意str_replace()函数的拼写错误。
    这产生了错误

    Fatal error: Unknown: Cannot use output buffering in output buffering display handlers in Unknown on line 0


    因此,似乎PHP无法通过ob_start回调函数报告运行时错误。相反,它必须默认为类似于的一般错误,这会伤害
    也许我们其中一位应该将其报告为PHP错误
    经过更多测试后,此错误Senario在PHP 7.0.5中产生了有意义的错误

    Notice: Use of undefined constant str - assumed 'str' in tst.php on line 3

    Fatal error: Uncaught Error: Call to undefined function replace() in tst.php:3


    因此现在可以解决此问题,但是所有以前的PHP版本(即5.4/5.5/5.6)都会产生无用的错误消息

    关于php - 第0行的PHP缓冲错误<未知>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36610608/

    相关文章:

    php - 如何保护网站免受批量抓取/下载?

    php websocket Ratchet 不从 Doctrine 中获取最新数据

    android - 错误 字段槽 0、-1 的错误请求

    c - 在 C 中实现双缓冲区

    php - Mysql用户统计

    javascript 以分号形式输出,每 block 50 个

    javascript - 修改html5音频标签中的下载文件名

    c++ - 在 C++ 中检查合法的整数输入

    c++ - 联网方式

    选择一种在 C 中缓冲文件内容的方法