錯誤報告配置的改變PHP 3 錯誤報告的層級是簡單的將不同的錯誤報告層級的數字相加而成。通常 15 代表報告所有錯誤,而 7 代表報告除了 notice 訊息以外的所有錯誤。 PHP 4 有一整套錯誤和警示的層級,並且配置解析器容許使用符號常量來定義顯示的錯誤層級。 錯誤報告層級應該被明確的配置。若果不想顯示某種錯誤訊息,需要將他們從 E_ALL 符號常量中排除。聽起來很複雜嗎?讓我們看看吧。若果想顯示除了以 E_NOTICE 表示的 notice 訊息以外的所有錯誤訊息,就應該在 php.ini 中設定:error_reporting = E_ALL & ~ ( E_NOTICE ) 。若果還不想顯示 warning 訊息,只需要使用「|」運算符:error_reporting= E_ALL & ~ ( E_NOTICE | E_WARNING )。
額外的警示訊息許多已存在的 PHP 3 代碼使用的語系型態在現在應當被看做是非常糟糕的。因此,若果用 PHP 4 編譯該腳本,會產生很多額外的警示訊息。若果不想看到這些訊息,只要簡單的把 E_NOTICE 選項關閉。但更好的做法是修正代碼。 最常見的出現 notice 提示訊息的情況是在陣列索引中使用沒有加引號的字串。PHP 3 和 PHP 4 在沒有同名的常量定義時都會把它解釋為字串,但是無論何時只要有常量是以該字串命名,腳本就可能會出現錯誤。若果有黑客利用這一點,設法重定義該常量,這個腳本就存在安全漏洞。所以只要出現未加引號的索引,PHP 4 就會警示對它加以修正。舉例來說,有漏洞的代碼 $_SERVER[REQUEST_METHOD],只要將它改為 $_SERVER['REQUEST_METHOD'],錯誤提示就會消失。 PHP 4 還會對未起始化的變量或陣列元素加以提示。 | ||||||