PHP捕捉錯誤的方法

不言
發布: 2023-04-02 20:20:01
原創
2299 人瀏覽過

這篇文章主要介紹了關於PHP捕捉錯誤的方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

PHP捕捉錯誤

  • 禁止錯誤輸出

error_reporting(0);
登入後複製
  • 設定錯誤處理器

set_error_handler('errorHandler');
登入後複製
  • 在腳本結束時運行的函數

register_shutdown_function('fatalErrorHandler');
登入後複製
  • 錯誤處理

/**
 * @param int    $err_no      错误代码
 * @param string $err_msg  错误信息
 * @param string $err_file    错误文件
 * @param int    $err_line     错误行号
 * @return string
 */
function errorHandler($err_no = 0, $err_msg = '', $err_file = '', $err_line = 0)
{
    $log = [
        '['.date('Y-m-d h-i-s').']',
        '|',
        $err_no,
        '|',
        $err_msg,
        '|',
        $err_file,
        '|',
        $err_line
    ];
    $log_path = './test.txt';
    error_log(implode(' ',$log)."\r\n",3, $log_path);
}
登入後複製
  • 捕捉致命錯誤

function fatalErrorHandler() {
    $e = error_get_last();

    var_export($e);
    switch ($e['type']) {
        case 1:
            errorHandler($e['type'], $e['message'], $e['file'], $e['line']);
            break;
    }
}
登入後複製
class DemoClass_1
{
    public function index()
    {
        //这里发生一个警告错误,出发errorHandler
        echo $undefinedVarible;
    }
}
登入後複製
  • 這裡發生一個警告錯誤,被errorHandler 捕獲

$demo_1 = new DemoClass_1();
$demo_1->index();
登入後複製
  • 發生致命錯誤,腳本停止執行觸發 fatalErrorHandler

$demo_2 = new DemoClass_2();
$demo_2->index();
登入後複製

開啟test.txt後 輸出:

[2018-06-12 05-49-11] | 8 | Undefined variable: undefinedVarible | /Users/darry/htdocs/test.php | 57
[2018-06-12 05-49-11] | 1 | Uncaught Error: Class 'DemoClass_2' not found in /Users/darry/htdocs/test.php:67
Stack trace:
#0 {main}
  thrown | /Users/darry/htdocs/test.php | 67
登入後複製

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

Nginx SSL快速雙向認證設定(腳本)

PHP資料結構基礎之遞迴

# 關於thinkphp行為的使用

以上是PHP捕捉錯誤的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!