一、php的錯誤分類
1.語法錯誤
語法錯誤不會執行php指令碼檔案中的任意**
2.執行時錯誤
在**執行的過程當中發生的錯誤
3.邏輯錯誤
不會發生語法錯誤,不會發生執行時錯誤,會顯示錯誤的結果
通常情況下,這種錯誤最難排錯
二、錯誤報錯級別
級別常量 錯誤值 錯誤報告描述
e_error 1 致命的執行時錯誤(阻止指令碼執行)
e_warning 2 執行時警告(非致命性錯誤)
e_parse 4 從語法中解析錯誤
e_notice 8 執行時注意訊息(可能是或可能不是乙個問題)
e_core_error 16 php啟動時初始化過程中的致命錯誤
e_core_warning 32 php啟動時初始化過程中的警告(非致命性)
e_compile_error 64 編譯時致命錯誤
e_compile_warning 128 編譯時警告(非致命性)
e_user_error 256 使用者自定義的致命錯誤
e_user_warning 512 使用者自定義的警告
e_user_notice 1024 使用者自定義的提醒(經常是bug)
e_strict 2048 編碼標準化警告(建議如何修改以向前相容)
e_all 6143 所有的錯誤、警告和注意資訊
三、更改錯誤報告級別
1.php的配置檔案php.ini中:
display_errors=on/off (是否顯示錯誤報告)
error_reporting=e_all (更改要顯示的錯誤報告級別)
2.在**中修改:
ini_set('display_errors','off');
error_reporting(0); / error_reporting(e_all);
四、使用者自定義錯誤報告的處理方式
①trigger_error('提示資訊',e_user_error/warning/notice);
②set_error_handler(**函式):
**函式所需的引數:
errorno:錯誤報告級別的常量值
errorstr:錯誤資訊
errorfile:錯誤發生的檔案
errorline:錯誤發生的行號
注意:當前檔案每發生一次錯誤,都會呼叫一次該**函式
例:set_error_handler('myerror');
function myerror($errorno,$errorstr,$errorfile,$errorline)
$str.=':'.$errorstr
;
$str.="
發生在檔案:".$errorfile."的第".$errorline."行";
echo "
"; }
五、儲存錯誤日誌到指定檔案中
**中設定:
ini_set('error_reporting','e_all'); //不可關閉錯誤報告級別,否則系統的錯誤報告不會寫入日誌檔案
ini_set('display_errors','off'); //關閉以避免系統錯誤報告在介面的顯示
ini_set('log_errors','on'); //開啟外部儲存錯誤資訊
ini_set('error_log','d:/error.log'); //設定儲存的位置
//**中使用函式error_log()即可將錯誤資訊寫入到d:/error.log檔案中
//也可在set_error_handler()的**函式中使用函式error_log()
error_log('自定義錯誤資訊');
例:
PHP 錯誤處理
在 php 中,預設的錯誤處理很簡單。一條訊息會被傳送到瀏覽器,這條訊息帶有檔名 行號以及一條描述錯誤的訊息。在建立指令碼和 web 應用程式時,錯誤處理是乙個重要的部分。如果您的 缺少錯誤檢測編碼,那麼程式看上去很不專業,也為安全風險敞開了大門。本教程介紹了 php 中一些最為重要的錯誤檢測方法。...
PHP 錯誤處理
在 php 中,預設的錯誤處理很簡單。一條訊息會被傳送到瀏覽器,這條訊息帶有檔名 行號以及一條描述錯誤的訊息。在建立指令碼和 web 應用程式時,錯誤處理是乙個重要的部分。如果您的 缺少錯誤檢測編碼,那麼程式看上去很不專業,也為安全風險敞開了大門。本教程介紹了 php 中一些最為重要的錯誤檢測方法。...
PHP 錯誤處理
在 php 中,預設的錯誤處理很簡單。一條錯誤訊息會被傳送到瀏覽器,這條訊息帶有檔名 行號以及描述錯誤的訊息。在建立指令碼和 web 應用程式時,錯誤處理是乙個重要的部分。如果您的 缺少錯誤檢測編碼,那麼程式看上去很不專業,也為安全風險敞開了大門。本教程介紹了 php 中一些最為重要的錯誤檢測方法。...