我们最近将服务器从 PHP4 升级到 PHP5.4
有一个正在运行的应用程序在日志文件中记录了很多错误。其中大多数是不推荐使用的错误,或者由于 PHP 版本的变化而导致的一些小问题。
我现在没有时间解决所有问题,但 error_log 文件在短短几天内就膨胀到了 10G。
在 php.ini 我设置 log_errors = Off
我还可以做些什么 ?
只需在 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 脚本之外使用预定义的错误常量,您必须使用实际的位掩码值。在这种情况下,您可以将以下内容添加到 config 或 htaccess 文件中:
php_value error_reporting 22519
我在文档中找不到在这种情况下支持按位操作的任何地方,因此如果您想调整 error_reporting 级别,您可以简单地创建一个具有以下内容的 php 脚本:
echo E_ALL & ~(E_DEPRECATED | E_STRICT | E_NOTICE);
这将输出该位掩码的十进制形式以使用(显然更改常量以匹配您要关闭的内容)。
您可以尝试将以下内容添加到文件顶部:
error_reporting(E_NONE);