error_reporting 指定在何種情況下,腳本中的錯誤(包含 E_NOTICE 注意、E_WARNING 警告、E_ERROR 致命錯誤等)會以錯誤報告形式輸出。正確設定錯誤報告級別,能有效協助開發除錯,也能避免敏感資訊洩露至生產環境。
此方式修改後需重啟 Web 伺服器才生效,適用於全域設定。以 XAMPP 為例:
php.ini,尋找 error_reporting 預設值:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICTerror_reporting = E_ALL & ~E_NOTICE語法:int error_reporting([int $level])
參數建議使用常數形式,回傳值為當前生效的錯誤報告級別(整數)。
| 值 | 常數 | 說明 |
|---|---|---|
| 1 | E_ERROR | 導致腳本終止的致命錯誤 |
| 2 | E_WARNING | 執行時警告(腳本不終止) |
| 4 | E_PARSE | 編譯時語法解析錯誤 |
| 8 | E_NOTICE | 執行時通知(可能導致錯誤) |
| 32767 | E_ALL | 所有錯誤(不同 PHP 版本值可能不同) |
// 除了 E_NOTICE 外,報告所有錯誤 error_reporting(E_ALL ^ E_NOTICE); // 僅報告致命錯誤 error_reporting(E_ERROR); // 僅報告 E_ERROR、E_WARNING、E_NOTICE 三種 echo error_reporting(E_ERROR | E_WARNING | E_NOTICE);
php.ini 中 display_errors 預設為 On(顯示錯誤)。若設為 Off,將關閉所有錯誤提示輸出。生產環境建議設為 Off,並搭配錯誤日誌記錄。