標籤:repo strong 系統 syslog warning 錯誤 ati 自訂 設定
一、PHP中調整錯誤報表層級的方式
1修改php.ini檔案的配置項
注意:會導致在當前伺服器環境下的所有PHP檔案都受影響,實際開發過程中,不推薦此方式(如果代碼更換伺服器會導致設定檔全部失效,需重新設定,實際開發過程中,並不 推薦這種修改方式)
>>>php.ini檔案中的兩個重要配置項
①display_errors:開啟或關閉所有的錯誤層級
可選值: 1/on開啟報告 0/Off關閉所有錯誤報表
eg:ini_set("display_errors","0");-->關閉所有錯誤報表
②error_reporting:設定哪些錯誤可以進行報告;
eg:ini_set("error_reporting","E_ALL & ~E_NOTICE");-->報告所有錯誤且不報告notice錯誤;
2直接在代碼中使用ini_set()函數,動態修改php.ini檔案的配置項
二、使用錯誤記錄檔來記錄出現的錯誤
1、使用記錄檔記錄:使用error_log()函數將錯誤資訊輸出到記錄檔中,預設記錄檔在wamp中的log檔案夾下,php_error.log檔案。
>>>自訂記錄檔列印:
①ini_set("error_log","E:/test.txt") 註:這裡用來設定記錄檔地址
error_log("出錯啦"); 列印一句錯誤資訊
②error_log("又出錯了",3,"E:/test.txt"); 直接將錯誤列印到指定檔案中
2、寫進windows系統日誌中
ini_set("error_log","syslog"); 設定日誌記錄到系統日誌
error_log("系統日誌出錯");使用日誌報錯時,將自動進入系統日誌
註:windows日誌查看方式 電腦>管理>系統工具>事件檢視器>事件摘要中找php>>
三、自訂錯誤處理函數
① 聲明一個錯誤處理函數 function func();
② 使用set_error_handler("func");設定當檔案出現錯誤時,不再使用系統內建的錯誤提示功能,而是調用我們自訂的函數。
註:set_error_handler("func")在觸發函數時會預設向函數發送四個參數:分別是:錯誤的層級、錯誤的資訊、發生錯誤的檔案、錯誤所在的行號
例:
ini_set("log_errors", "On"); $errMessage = ""; function errorHandler($type,$message,$file,$line){ global $errMessage; switch ($type) { case E_NOTICE: $errMessage .= "發生了沒有什麼卵用的小bug,就不用處理了<br><br>"; echo "<script>"; echo "alert(\"{$errMessage}\")"; echo "</script>"; break; case E_WARNING: $errMessage .= "出錯啦!!!"; $errMessage .= "錯誤類型是:{$type}"; $errMessage .= "錯誤資訊是:{$message}"; $errMessage .= "錯誤發生的檔案是:{$file}"; $errMessage .= "錯誤發生的行號是:{$line}"; $errMessage .= "<br><br>"; break; case E_ERROR: echo "<script>"; echo "location.href=‘../test.php‘"; echo "</script>"; break; default: echo "<script>"; echo "location.href=‘../test.php‘"; echo "</script>"; break; } } set_error_handler("errorHandler"); echo $num; echo $errMessage;
PHP中的錯誤處理