PHP 會針對許多內部錯誤狀況回報錯誤。這些錯誤可用於 segnalare 各種不同的狀況,並且可以根據需要顯示和/或記錄。
PHP 產生的每個錯誤都包含一個類型。這裡列出這些錯誤類型,以及它們的行為和產生原因的簡短描述。
如果沒有設定錯誤處理器,PHP 將會根據其配置處理發生的任何錯誤。哪些錯誤會被報告,哪些會被忽略,是由 php.ini 指令 error_reporting
或在執行期間呼叫 error_reporting() 函式來控制的。強烈建議設定此配置指令,因為有些錯誤可能在腳本執行開始之前就發生了。
在開發環境中,您應該始終將 error_reporting
設定為 E_ALL
,因為您需要了解並修復 PHP 提出的問題。在正式環境中,您可能希望將其設定為較不詳細的級別,例如 E_ALL & ~E_NOTICE & ~E_DEPRECATED
,但在許多情況下,E_ALL
也是合適的,因為它可以提供潛在問題的早期警告。
PHP 如何處理這些錯誤取決於另外兩個 php.ini 指令。display_errors
控制錯誤是否顯示為腳本輸出的一部分。在正式環境中,應始終停用此功能,因為它可能包含機密資訊,例如資料庫密碼,但在開發過程中,啟用此功能通常很有用,因為它可以確保立即報告問題。
除了顯示錯誤之外,當啟用 log_errors
指令時,PHP 也可以記錄錯誤。這會將任何錯誤記錄到由 error_log
定義的檔案或系統日誌中。這在正式環境中非常有用,因為您可以記錄發生的錯誤,然後根據這些錯誤產生報告。
如果 PHP 的預設錯誤處理功能不足,您也可以使用自訂錯誤處理器來處理許多類型的錯誤,方法是使用 set_error_handler() 安裝它。雖然某些錯誤類型無法以這種方式處理,但可以處理的錯誤類型可以按照您的腳本認為合適的方式處理:例如,這可以用來向使用者顯示自訂錯誤頁面,然後以比透過日誌更直接的方式報告,例如透過發送電子郵件。