PHP中的錯誤處理

來源:互聯網
上載者:User

標籤: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中的錯誤處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.