PHP错误抑制被忽略了。

5

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

error_reporting = E_ALL & ~E_STRICT & ~E_DEPRECATED

使用此设置的原因是我们急需在托管我们网站的Linux服务器上执行PHP升级;问题在于,弃用函数和严格标准建议将很快填满超过170个网站的错误日志文件。这些错误大多是由于一些小问题引起的,比如函数未声明为静态等。最终,我们将完成所有网站的修复工作,但在此期间,我们需要压制错误。
在本地测试环境中(运行我们要升级到的PHP版本-5.4.3),我遇到的问题是错误仍然显示,并打印出以下内容:
SCREAM: Error suppression ignored for

有人能为我解释一下为什么错误抑制被忽略了,以及如何正确地进行错误抑制吗?

提前感谢。


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

8

看起来您正在使用scream扩展。根据手册:

scream扩展提供了禁用静音错误控制运算符以使所有错误都被报告的可能性。此功能由一个ini设置控制。

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

scream.enabled = off

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


将 scream.enabled = Off 添加到 php.ini 文件中并不能阻止错误抑制被忽略。目前添加该行没有任何作用。我知道这是一个相当混乱的方法,但它只是暂时的。我尝试安装另一个 PHP 实例作为 CGI,但迄今为止没有成功,因此我正在寻找其他选项。有什么想法吗? - William Stewart
1
我已经成功在我们的服务器上运行了第二个 PHP 实例,感谢您的建议。 - William Stewart
@WilliamStewart 很抱歉我没有注意到你的第一条评论。在没有查看您服务器的实际设置之前,我只能指出error_reporting级别可以针对每个脚本进行设置。也许您的170个站点中有一个或多个这样做了?然而,常规的PHP错误消息不应该有“Scream:”前缀。关于第二条评论:我认为那是个好主意! - hek2mgl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接