2013-03-04 69 views
3

我目前的php.ini文件设置为比报告折旧和严格的标准,其他所有错误如下:PHP错误抑制被忽略

error_reporting = E_ALL & ~E_STRICT & ~E_DEPRECATED 

之所以使用这个设置是我们迫切需要执行在托管我们网站的Linux服务器上升级PHP;存在的问题是不推荐的功能和严格的标准建议将很快填满170多个网站的错误日志文件。这些错误主要是由于一些小的东西,比如函数没有被声明为静态的等等。最终,我们将通过所有的网站并解决这些问题,但同时我们需要抑制这些错误。

我有一个本地测试环境(运行PHP,我们希望升级到的版本 - 5.4.3)的问题是,错误仍与之前有如下印刷显示:

SCREAM: Error suppression ignored for 

任何人都可以给我一些见解,为什么错误抑制被忽略,以及如何正确抑制错误?

在此先感谢。

+0

也许是一个愚蠢的问题,但你有没有重新启动Apache? – 2013-03-04 13:55:34

+0

不是一个愚蠢的问题,惊讶其被忽视的频率。但是,我正在重新启动所有WAMP服务。 – 2013-03-04 13:56:41

回答

6

看来你正在使用尖叫扩展名。从手册:

尖叫扩展提供了禁用沉默错误控制运算符的可能性,以便报告所有错误。此功能由ini设置控制。

Scream是调试的扩展,旨在显示尽可能多的错误消息。这是通过忽略@操作员并始终具有可用的最高error_retening级别来完成的。 (不管你的error_reporting设置)。所以,你会在你的php.ini中停用扩展:

scream.enabled = off 

BTW:我不会更新有170个网站的代码错误的服务器。现在是一个滴答作响的炸弹。将它们逐个迁移到新的PHP版本会更好。在迁移过程中可能有两台服务器并行运行。

+0

向php.ini文件添加scream.enabled = Off不会阻止错误抑制被忽略。此刻添加该行什么也不做。我知道这是一种非常混乱的做事方法,但它只是暂时的。到目前为止,我还没有安装另一个PHP实例作为CGI,所以我正在寻找其他选项。有任何想法吗? – 2013-03-07 11:07:51

+1

我能够得到PHP的第二个实例在我们的服务器上工作,感谢您的建议。 – 2013-03-11 15:25:56

+0

@WilliamStewart对不起,我没有认出你的第一条评论。不用看看服务器的实际设置,我可以指出''error_reporting'级别可以为每个脚本设置。也许您的170个网站中的一个或多个会这样做?但是,常规的PHP错误消息不应该有'Scream:'前缀。关于第二条评论:我认为这是一个好主意! – hek2mgl 2013-03-11 18:50:44