Linux

禁用 PHP 棄用警告和通知

  • April 28, 2020

我一直在使用和配置 PHP,但現在我遇到了一個奇怪的問題,所以我要向你們尋求幫助。

我不想在生產伺服器中看到棄用警告和通知,但是我希望看到其他錯誤消息,例如語法錯誤。

我在 Ubuntu 10.10 上使用 Suhosin-Patch 執行 PHP 5.3.3-1ubuntu9.3

在我的/etc/php5/apache2/php.ini我有以下行:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE

我已經重新啟動了網路伺服器。在虛擬主機配置中沒有 php_admin_value 與此配置混淆,文件夾中沒有任何 .htaccess 文件。

儘管如此,仍會顯示棄用警告和通知。

首先我要感謝 binfalse 回答了這個問題,但是他的建議並沒有解決我的問題,並且通知繼續顯示。

這是因為 PHP 有幾個可以設置配置的地方。雖然我對這些設置的優先級有所了解,但我決定對它們進行實驗測試,以確定我將在這個答案中說什麼。

所以這裡是這些地方的列表,從更全球化到更具體。列表中較低的每個設置都可以覆蓋之前的設置。

  1. php.ini配置文件。如果是 Ubuntu,其中有兩個,/etc/php5/apache2/php.ini 是用於 php apache 模組的一個。它將對所有虛擬主機產生全域影響。
  2. conf.d 目錄。實際上並不是所有的安裝都會有這個模組化的配置,但是在 Ubuntu 的情況下,apache 模組位於 /etc/php5/apache2/conf.d 中。在此目錄中添加的任何文件都將被添加到主 php.ini 配置中,其優先級高於 php.ini。換句話說,這裡的任何設置都將覆蓋 php.ini 中的設置——我測試了添加一個 error.ini。它將對所有虛擬主機產生全域影響。
  3. Apache 虛擬主機配置。一般設置在/etc/apache2/sites-available,每個虛擬主機可以有不同的設置。在 VirtualHost 標記內可以包含“php_value error_reporting”,其中 value 是對常量進行布爾運算的數值結果。在這種配置中,實際上是不允許使用助記常數而只能使用數值的。它只會影響單個虛擬主機。它將覆蓋上述設置。
  4. .htaccess。也可以在 .htaccess 中設置配置值,特別是 error_reporting 設置,語法與 3 中描述的相同。它只會影響 .htaccess 所在的目錄和所有子目錄。它將覆蓋上述設置,在這種情況下不需要重新啟動 apache。
  5. 原始碼。可以更改此設置的最後一個位置是直接在執行的 PHP 源中。如果使用,將覆蓋所有以前的設置,這正是我所面臨的。可以呼叫函式“error_reporting()”或使用“ini_set(“error_reporting”, )”來設置它。編譯錯誤仍然可能顯示,因為在這種情況下不會執行腳本。

引用自:https://serverfault.com/questions/263167