PHP 错误抑制被忽略

PHP error suppression is being ignored

提问人:William Stewart 提问时间:3/4/2013 更新时间:3/5/2013 访问量:9083

问:

我当前的php.ini文件设置为报告除弃用和严格标准以外的所有错误,如下所示:

error_reporting = E_ALL & ~E_STRICT & ~E_DEPRECATED

使用此设置的原因是,我们迫切需要在托管我们网站的 linux 服务器上执行 PHP 升级;问题在于,弃用的功能和严格的标准建议将很快填满 170 多个网站的错误日志文件。这些错误主要是由于一些小事情造成的,例如函数未被声明为静态等。最终,我们将遍历所有站点并解决这些问题,但与此同时,我们需要抑制错误。

我在本地测试环境(运行我们希望升级到的PHP版本-5.4.3)上遇到的问题是错误仍然显示,之前打印了以下内容:

SCREAM: Error suppression ignored for

谁能告诉我为什么忽略错误抑制以及如何正确抑制错误?

提前致谢。

PHP 错误报告 错误抑制

评论

0赞 Maciej Gurban 3/4/2013
也许是一个愚蠢的问题,但你重新启动了 Apache 吗?
0赞 William Stewart 3/4/2013
这不是一个愚蠢的问题,令人惊讶的是它经常被忽视。但是,是的,我正在重新启动所有 WAMP 服务。

答:

8赞 hek2mgl 3/5/2013 #1

您似乎正在使用尖叫扩展。从手册:

尖叫扩展提供了禁用静音错误控制操作员的可能性,因此报告所有错误。此功能由 ini 设置控制。

Scream 是一个用于调试的扩展,旨在显示尽可能多的错误消息。这是通过忽略操作员并始终具有可用的最高error_reporating级别来完成的。(无论您的设置如何)。因此,您必须在php.ini中停用该扩展程序:@error_reporting

scream.enabled = off

顺便说一句:我不会更新具有 170 个带有代码错误的网站的服务器。现在是一颗定时炸弹。最好将它们逐个站点迁移到新的PHP版本。也许在迁移过程中有两台服务器并行。

评论

0赞 William Stewart 3/7/2013
将 scream.enabled = Off 添加到php.ini文件并不能阻止错误抑制被忽略。目前,添加该行没有任何作用。我知道这是一种非常混乱的做事方法,但这只是暂时的。到目前为止,我还没有运气将另一个PHP实例安装为CGI,所以我正在寻找其他选择。有什么想法吗?
1赞 William Stewart 3/11/2013
我能够让PHP的第二个实例在我们的服务器上工作,感谢您的建议。
0赞 hek2mgl 3/12/2013
@WilliamStewart 对不起,我没有认出你的第一条评论。在不查看服务器的实际设置的情况下,我只能指出可以按脚本设置级别。也许您的 170 个站点中的一个或多个正在这样做?但是,常规的 PHP 错误消息不应包含“Scream:”前缀。关于第二条评论:我认为这是个好主意!error_reporting