1. 程式人生 > >PHP中的錯誤處理

PHP中的錯誤處理

日誌記錄 bre 級別 windows日誌 cati 地址 當前 錯誤類型 計算

一、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中的錯誤處理