如何关闭 PHP 错误日志记录


How to turn down PHP error logging

我们最近将服务器从 PHP4 升级到 PHP5.4

正在运行的应用程序在日志文件中记录大量错误。 它们中的大多数都是已弃用的错误,或者由于 PHP 版本的更改而导致的一些小事情。

我现在没有时间解决所有问题,但error_log文件在短短几天内就膨胀到 10G。

在 php 中.ini我设置log_errors = 关闭

我还能做什么?

只需在

php 中关闭这些警告.ini

error_reporting  = E_ALL & ~E_DEPRECATED

在运行时:

error_reporting(E_ALL & ~E_DEPRECATED);

这取决于您要报告哪些错误(如果有(。 如果您不希望报告任何错误(我认为是坏主意(,请使用:

error_reporting(0);

在脚本的顶部。

如果只想关闭已弃用的错误,则需要使用一些使用预定义错误常量的按位运算符。我相信以下内容将起作用并符合您的想法:

error_reporting(E_ALL ^ (E_DEPRECATED & E_STRICT & E_NOTICE))

这仍然会留下致命错误和可捕获的错误(这 3 个中的 2 个将停止脚本,以便很好地捕获(,但省略"您的脚本是旧的"类型错误。

也可以将不太需要的错误发送到另一个错误日志,以便以后可以处理它们,但不会阻塞主错误日志。询问是否有兴趣。

快速编辑:

因为E_STRICT不包含在E_ALL中,所以上面会打开E_STRICT(只有当我们假设 ALL 意味着所有(所有位都翻转(时,这只会令人困惑(。 因此,这将产生关闭这三个错误的预期结果:

error_reporting(E_ALL ^ (E_DEPRECATED & E_NOTICE))

或者,吃我对 Zuul 答案的评论的话,这也行得通(尽管逻辑让我头疼(:

error_reporting(E_ALL & ~(E_DEPRECATED | E_STRICT | E_NOTICE))

另外,由于您特别提到了 Apache,您应该知道您不能在 PHP 脚本之外使用预定义的错误常量,您必须使用实际的位掩码值。在这种情况下,您需要将以下内容添加到配置或 htaccess 文件中:

php_value error_reporting 22519

我在文档中找不到在这种情况下支持按位运算的任何地方,因此如果您想调整error_reporting级别,您可以简单地使用以下内容创建一个 php 脚本:

echo E_ALL & ~(E_DEPRECATED | E_STRICT | E_NOTICE);

这将输出要使用的位掩码的十进制形式(显然更改常量以匹配您要关闭的内容(。

您可以尝试将以下内容添加到文件顶部:

error_reporting(E_NONE);