PHP 對一些內部的錯誤情況進行報錯。 這些錯誤可以用來表示不同的情況,可以根據需要將錯誤顯示出來或記錄到日志中。
每個 PHP 產生的錯誤都包含了類型??刹榭? 錯誤類型清單,它附帶了不同類型行為的簡短描述和 產生的原因。
當未設置錯誤處理函數時,PHP 會根據配置處理出現的錯誤。
php.ini 中
error_reporting
的配置或者是運行時調用
error_reporting() 控制了哪些錯誤需要報告,哪些錯誤需要自動忽略。
由于有些錯誤會在運行用戶腳本前就可能出現,所以強烈推薦用配置指令來設置。
在開發(fā)環(huán)境里為了發(fā)現并修復 PHP 產生的問題,
應該總是把 error_reporting
設置為 E_ALL
。
在生產環(huán)境里,用戶可能為了降低信息的詳細程度,
想要將它設置為類似 E_ALL & ~E_NOTICE & ~E_DEPRECATED
,
但很多情況下 E_ALL
也同樣適用,這樣可以更早地警告潛在問題。
PHP 對這些錯誤的處理方式,取決于兩個更深的 php.ini 指令。
display_errors
控制了是否要將錯誤作為腳本輸出的一部分顯示。
在生產環(huán)境里應該禁用,因為可能包含類似數據庫密碼這樣的敏感信息,
而在開發(fā)環(huán)境中應該啟用,能確保立即報告問題。
PHP 不僅能顯示錯誤,還可以開啟 log_errors
指令來記錄錯誤日志。它能根據 error_log
的設置,記錄任意錯誤到文件或者 syslog。
特別適用于生產環(huán)境,用戶可以記錄發(fā)生的錯誤,并根據這些錯誤生成報告。
如果 PHP 默認錯誤處理器還不能滿足要求,用戶可以通過 set_error_handler() 設置自定義錯誤處理器,可處理很多類型的錯誤。 雖然有些類型的錯誤不能通過這種方式處理,但能處理的類型可以用腳本合適的方式處理: 例如為用戶顯示自定義錯誤頁面,同時以一種比日志更直接的方式上報錯誤,例如發(fā)送郵件。