PHP error_reporting问题,甚至是local = On

时间:2014-01-05 18:21:58

标签: php ini-set

在我的php.ini中,display_errors设置按标准设置为Off。通常我用

启动我的index.php文件
ini_set('display_errors', 'On');
error_reporting(E_ALL & ~E_NOTICE);

这一切都能满足我的需求。

最近,错误报告不再起作用了。通知已被抛出,所以:

<?php echo $i ?>

发出通知“未定义常量”

<?php badbadbad ?>

只返回空白页而不是致命错误消息。

检查phpinfo()表明display_errors的主值为Off,而本地值设置为On(按预期方式)。然而,我无法收到任何错误消息。

更改我的display_errors = On的php.ini设置让我解决了这个问题,但不应该是永远的解决方案。

任何提示?

谢谢&amp; brgds 大卫

1 个答案:

答案 0 :(得分:2)

我认为你的第二个例子失败的原因是它实际上是一个解析错误。

执行代码时,PHP必须首先解析并编译它将要执行的整个文件,然后才能运行它。如果在解析过程中出现问题,即使问题出现在文件的末尾,也不会执行任何文件的代码 - 因此,ini_set()error_reporting()语句也不会执行。

如果错误的代码与所述语句在同一个文件中,那么您无能为力。如果它位于与includerequire一起使用的另一个文件中,请确保在设置新的错误报告值后进行包含调用。至少这适用于PHP&gt; = 5.4。