如何拒绝PHP错误记录

时间:2012-05-14 22:36:53

标签: php apache logging

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

正在运行的应用程序在日志文件中记录了大量错误。其中大多数都是不推荐使用的错误,或者由于PHP版本的变化而导致的一些小问题。

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

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

我还能做什么?

3 个答案:

答案 0 :(得分:3)

只需在php.ini

中关闭这些警告即可
error_reporting  = E_ALL & ~E_DEPRECATED
运行时

error_reporting(E_ALL & ~E_DEPRECATED);

答案 1 :(得分:2)

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

error_reporting(0);

在剧本的顶部。

如果您只想关闭已弃用的错误,则需要使用bitwise operators使用一些predefined error constants。我相信以下内容适合您的想法:

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

这仍会留下致命的错误和可捕获的错误,(其中2个将暂停脚本以便它们很好地捕获),但是省略了“你的脚本是旧的”类型错误。

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

快速编辑:

由于E_STRICT中未包含E_ALL,因此以上内容将 on E_STRICT(当我们假设 ALL <时,这只会引起混淆/ strong>意味着,所有这些(所有位都被翻转)。所以这将产生这三个错误被关闭的期望结果:

error_reporting(E_ALL ^ (E_DEPRECATED & E_NOTICE))

或者,为了吃我对zuul答案的评论,我也会这样做(虽然逻辑会伤害我的头脑):

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

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

php_value error_reporting 22519

我没有在文档中的任何地方找到这种情况下支持按位操作的地方,所以如果你想调整error_reporting级别,你可以简单地用以下内容创建一个php脚本:

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

将输出该位掩码的十进制形式(显然更改常量以匹配您想要关闭的位置)。

答案 2 :(得分:0)

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

error_reporting(E_NONE);