PHP中的即时错误报告

9

我们的网站以前是在安装了PHP的IIS主机上运行的,我将错误报告设置为E_NONE,可以通过以下方式暂时开启:

ini_set('display_errors', 1);

现在我们使用Linux/Apache托管,那个命令似乎不再起作用。我故意向服务器发送错误命令,但没有报告任何错误。

我做错了什么?有没有其他方法可以临时打开错误报告,而不必每次都编辑php.ini文件?


在我看来,最好在您的php.ini文件中针对整个服务器(开发或生产)进行此类设置。我真的很喜欢人们进行特定于文件的错误显示,这只会制造混乱。 - Jakub
1
如果我在服务器上做,那么它会在整个网站上显示。将其添加到页面上,它只会在该页面上显示。 - sehummel
这里是完整列表:http://php.net/manual/fr/function.error-reporting.php - maxday
3个回答

13

你可以使用以下代码将错误报告更改为E_ALL

error_reporting(E_ALL);

尝试将其添加到文件中。


3

打开所有错误的最佳方法是:

error_reporting( -1 );

这比E_ALL更好,因为E_ALL并不意味着在所有版本的PHP中都包含所有错误(仅在最新版本中才是如此)。-1是确保在所有情况下都开启它的唯一方法。


更新:自 PHP 5.4 起,E_STRICT 已包含在 E_ALL 中,现在涵盖了所有错误类。我认为 E_ALL 通常比 -1 更好。这使得未来的 PHP 版本有可能引入实验性的新错误类,并且不会在基于 E_ALL 的脚本中触发它们,直到将来的版本(就像在 PHP 5.x - 5.3 中的 E_STRICT 一样)。 - thomasrutter

3

我在其中一个脚本中不得不这样做。DOMDocument警告一直在影响我的日志记录。所以,这是该怎么做的:

// First, grab a copy of the current error_reporting level
// while setting the new level, I set it to zero because I wanted
// it off - but you could easily turn it on here
$erlevel = error_reporting(0);
// Then, do stuff that generates errors/warnings
// Finally, set the reporting level to it's previous value
error_reporting($erlevel);

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