输出缓冲未显示错误通知

3
在我的 PHP 脚本中,我已将错误打开到 E_ALL 。然后,在我的视图周围添加一个输出缓冲区,它以 ob_start()/ob_flush 开始和结束。现在我遇到的问题是,如果发生警告,则不会显示,但致命错误会显示。
是否有人知道为什么会出现这种情况,以及如何更改?
如果有影响的话,我正在运行安装有 Apache 的 Centos 6 服务器上的 PHP 5.3.3 版本。

1
输出缓冲不会禁用或隐藏错误;您可能已经在其他地方更改了某些设置,这些设置会将错误隐藏起来。 - Repox
不,我在使用MVC。前端控制器有error_reporting(E_ALL); 我所做的就是将视图包装在输出缓冲区中。我希望通知被显示出来以帮助我进行调试,而不是关闭它们。 - Devin Dixon
尽管您告诉前端控制器应启用错误报告,但输出缓冲并不禁用或隐藏错误、警告或通知。服务器的设置可能会覆盖这一点,这很可能就是情况。 - Repox
我其实也遇到了同样的问题——我正在生成一个手写的MVC模型,但一些输出缓冲函数却掩盖了浏览器中的错误。禁用这些输出函数,所有的错误都会显示出来;启用它们,错误却神奇地消失了。就好像ob_get_clean只从当前缓冲区获取,但擦除了之前的缓冲区。(有趣的是,尽管我只调用了一次缓冲区,但我的缓冲区级别却是“2”)。 - RonLugge
哦,补充一下,被屏蔽的不仅仅是错误信息,我自己放到函数中以调试为目的的“echo”语句(或var_dump)也被屏蔽了,这些语句通常帮助我找出它们不能按预期工作的原因。 - RonLugge
RonLugge,你有没有进展,弄清楚为什么它在你的电脑上会这样做? - Devin Dixon
1个回答

1

编辑您的php.ini文件:

  1. 确保您已经设置了正确的error_level(请参阅:http://www.php.net/manual/en/function.error-reporting.php)。
  2. 在开发/测试环境中,确保display_errors设置为On,在生产环境中设置为Off。
  3. 设置log_errors=/tmp/phperrors.log

然后您就可以放心使用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接