PHP 錯誤
PHP Error 和 Logging 簡介
Error 和 Logging 函數可讓您處理和記錄錯誤。
Error 函數允許使用者定義錯誤處理規則,並修改記錄錯誤的方式。
Logging 函數允許使用者對應用程式進行日誌記錄,並將日誌訊息傳送到電子郵件、系統日誌或其他的機器。
執行設定
error 函數受 php.ini 設定檔影響。
錯誤與日誌配置選項:
參數 | 預設值 | 描述 | #可修改範圍 |
---|---|---|---|
error_reporting | NULL | 設定PHP 的報錯等級並傳回目前等級(數字或常數)。 | PHP_INI_ALL |
display_errors | "1" |
此選項設定是否將錯誤訊息作為輸出的一部分顯示到螢幕,或對使用者隱藏而不顯示。 注意: 此特性不要在上線生產環境中使用(在開發測試過程中使用) | PHP_INI_ALL |
display_startup_errors | "0" | 即使display_errors 設定為開啟, PHP 啟動過程中的錯誤訊息也不會被顯示。強烈建議除了調試目的以外,將 display_startup_errors 設定為關閉。 | PHP_INI_ALL |
log_errors | "0" | 設定是否將腳本執行的錯誤訊息記錄到伺服器錯誤日誌或error_log之中。注意,這是與伺服器相關的特定配置項目。 | PHP_INI_ALL |
log_errors_max_len | "1024" | 設定log_errors 的最大位元組數. 在error_log 會加入有關錯誤來源的訊息。預設值為1024,如果設定為0表示不限長度。此長度設定對記錄的錯誤,顯示的錯誤,以及 $php_errormsg都會有限製作用。 | PHP_INI_ALL |
ignore_repeated_errors | "0" | #不記錄重複的資訊。重複的錯誤必須出現在同一個檔案中的同一行程式碼上,除非 ignore_repeated_source 設定為true。 | PHP_INI_ALL |
ignore_repeated_source | "0" | 當忽略重複訊息時,也忽略訊息的來源。當該設定開啟時,重複訊息將不會記錄它是由不同的檔案還是不同的原始程式碼行產生的。 | PHP_INI_ALL |
report_memleaks | "1" | 如果這個參數設定為Off,則記憶體外洩資訊不會顯示(在stdout 或日誌中)。 | PHP_INI_ALL |
track_errors | "0" | 如果開啟,最後的錯誤將永遠存在於變數$php_errormsg 中。 | PHP_INI_ALL |
html_errors | "1" | 在錯誤訊息中關閉HTML標籤。 | PHP_INI_ALL PHP_INI_SYSTEM in PHP <= 4.2.3. |
xmlrpc_errors | "0" | 關閉正常的錯誤報告,並將錯誤的格式設定為XML-RPC錯誤訊息的格式。 | PHP_INI_SYSTEM |
xmlrpc_error_number | "0" | 用作 XML-RPC faultCode 元素的值。 | PHP_INI_ALL |
docref_root | "" | 新的錯誤訊息格式包含了對應的參考頁面,該頁面對錯誤進行具體描述,或描述了導致該錯誤發生的函數。 為了提供手冊的頁面,你可以在PHP官方網站下載對應語言的手冊,並在ini中設定網址到本地對應的位址。 如果你的本地手冊拷貝可以使用"/manual/" 訪問,你就可以簡單的設定 docref_root=/manual/。 另外你還需要設定 docref_ext 符合你本機檔案的後綴名稱 docref_ext=.html。當然也可以設定一個外部的參考位址。 例如你可以設定docref_root=http://manual/en/ 或docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F" | PHP_INI_ALL |
docref_ext | "" | 參考docref_root. | ##PHP_INI_ALL|
NULL | 錯誤訊息之前輸出的內容。 | PHP_INI_ALL | |
NULL | 錯誤訊息之後輸出的內容。 | PHP_INI_ALL | |
#NULL | 設定腳本錯誤將被記錄到的檔案。該文件必須是web伺服器用戶可寫的。 | PHP_INI_ALL |
#安裝Error 和 Logging 函數是 PHP 核心的組成部分。無需安裝即可使用這些函數。
PHP Error 和 Logging 函數
PHP:指示支援該函數的最早的 PHP 版本。
描述 | PHP | ||
---|---|---|---|
#產生backtrace。 | 4 | ||
列印 backtrace。 | 5 | ||
#取得最後發生的錯誤。 | 5 | ||
向伺服器錯誤記錄、檔案或遠端目標傳送錯誤。 | 4 | ||
#規定要報告哪個錯誤。 | 4 | ||
還原之前的錯誤處理程序。 | 4 | ||
還原先前的例外處理程序。 | 5 | ||
#設定使用者自訂的錯誤處理函數。 | 4 | ||
設定使用者自訂的例外處理函數。 | 5 | ||
#建立使用者自訂的錯誤訊息。 | 4 | ||
trigger_error() 的別名。 | 4 |
值 | 常數 | 描述 | PHP |
---|---|---|---|
E_ERROR | 運行時致命的錯誤。不能修復的錯誤。停止執行腳本。 | ||
E_WARNING | 執行階段非致命的錯誤。沒有停止執行腳本。 | ||
E_PARSE | 編譯時的解析錯誤。解析錯誤應該只由解析器產生。 | ||
E_NOTICE | 運行時的通知。腳本發現可能是一個錯誤,但也可能在正常運行腳本時發生。 | ||
E_CORE_ERROR | PHP 啟動時的致命錯誤。這就如同 PHP 核心的 E_ERROR。 | 4 | |
E_CORE_WARNING | PHP 啟動時的非致命錯誤。這就如同 PHP 核心的 E_WARNING。 | 4 | |
E_COMPILE_ERROR | #編譯時致命的錯誤。這就如同由 Zend 腳本引擎產生的 E_ERROR。 | 4 | |
E_COMPILE_WARNING | 編譯時非致命的錯誤。這就如同由 Zend 腳本引擎產生的 E_WARNING。 | 4 | |
E_USER_ERROR | 使用者產生的致命錯誤。這就像是由程式設計師使用 PHP 函數 trigger_error() 產生的 E_ERROR。 | 4 | |
E_USER_WARNING | 使用者產生的非致命錯誤。這就如同由程式設計師使用 PHP 函數 trigger_error() 產生的 E_WARNING。 | 4 | |
E_USER_NOTICE | 用戶產生的通知。這就如同由程式設計師使用 PHP 函數 trigger_error() 產生的 E_NOTICE。 | 4 | |
E_STRICT | 執行時的通知。 PHP 建議您改變程式碼,以提高程式碼的互用性和相容性。 | 5 | |
E_RECOVERABLE_ERROR | 可捕獲的致命錯誤。這就如同一個可以由使用者定義的句柄捕獲的 E_ERROR(請參閱 set_error_handler())。 | 5 | |
E_ALL | 所有的錯誤和警告的級別,除了E_STRICT(自PHP 6.0 起,E_STRICT將作為E_ALL的一部分)。 | 5 |