2013-10-25 64 views
9

我正在運行一個充滿error_reporting調用的應用程序,但我正在運行PHP 5.5,其中有很多折舊的警告。我已經像這樣正確配置了我的php.ini文件。如何將PHP配置爲在運行時忽略error_reporting()?

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 

但是,所有的error_reporting()調用都會覆蓋它。有沒有什麼辦法可以忽略對error_reporting()的運行時調用?

更改所有error_reporting()調用是一件非常麻煩的事情,尤其是因爲應用程序需要定期更新並且我想避免運行安裝後的hack腳本。

我不想提的應用程序的名稱,這是vBulletin 5.

+0

「我不想提及應用程序的名稱,它是VBulletin 5。「是的。如果在應用程序中有一個'error_reporting()'調用,這是對不好的PHP開發人員的暗示。應該通過服務器配置(即'php.ini')設置'error_reporting'。 – feeela

+0

'str_replace('error_reporting','',$ code);';-) –

+0

如果你可以「強制」重新定義一個函數,那將是很好的。就像你可以用JavaScript做的一樣。好吧。 –

回答

8

有一個ini設定disable_functions,你可以用它來禁用error_reporting()功能。這樣應用程序就不能通過這個函數設置錯誤報告級別。

disable_functions = error_reporting 

只有內部功能都可以使用這個指令被禁用。用戶定義的功能不受影響。 該指令必須在php.ini中設置。例如,您不能在httpd.conf中設置該指令。

參見:http://www.php.net/manual/en/ini.core.php#ini.disable-functions

+0

一個正確答案的折騰。 –

+6

打擊邪惡與極端邪惡。我喜歡! +1 :) –

4

如果你有過可以使用php_admin_value設置error_reporting到無法被重寫的值的網絡服務器配置控制。

根據the documentation這不能用於.htaccess文件,所以你將不得不在整個服務器上使用它...也許有點太多。

另一種可能性是使用disable_functions來禁用error_reporting。缺點是,你會得到一個警告每次使用的時間,但你可以得到周圍:

您可以添加到你的php.ini一節,隻影響特定的腳本:

[PATH=<path>] 
error_reporting = 0 
disable_functions = "error_reporting" 
+0

哈哈。是的警告,但這是我想到的事情。鉭 –