2013-03-04 68 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