1

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

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

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

在 php.ini 我设置 log_errors = Off

我还可以做些什么 ?

4

3 回答 3

3

只需在 php.ini 中关闭这些警告

error_reporting  = E_ALL & ~E_DEPRECATED

在运行时:

error_reporting(E_ALL & ~E_DEPRECATED);
于 2012-05-14T22:51:43.437 回答
2

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

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 脚本之外使用预定义的错误常量,您必须使用实际的位掩码值。在这种情况下,您可以将以下内容添加到 config 或 htaccess 文件中:

php_value error_reporting 22519

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

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

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

于 2012-05-14T22:53:59.813 回答
0

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

error_reporting(E_NONE);
于 2012-05-14T22:43:44.927 回答