-
查看全部
-
筆記鏈接:處理PHP中的錯誤
查看全部 -
查看全部
-
register_shutdown_function()函數是從內存中調用的,也就是PHP語句執行完之后(頁面已不存在了)再調用這個函數,所以寫路徑的時候已經脫離這個腳本了,所以file_put_contents()路徑要用絕對路徑
?error_get_last # 得到最后產生的錯誤
注意:如果在register_shutdown_function() 之前有die/exit則不會被執行
查看全部 -
require_once?'MyErrorHandler.php'; error_reporting(-1); //使用MyErrorHandler類直接調用deal方法 /** ?*?set_error_handler(array(類名/new?類名,方法名)); ?*?set_error_handler(函數名); ?*/ set_error_handler(array('MyErrorHandler','deal')); //通知級別錯誤 echo?$test; //警告級別錯誤 settype($var,'king'); //致命錯誤 //test(); //總結:手動拋出的信息會被顯示在瀏覽器 trigger_error('我是手動拋出的致命錯誤',E_USER_ERROR); echo?'this?is?a?test?';
查看全部 -
class?MyErrorHandler{ ????//錯誤信息 ????public?$message?=?''; ????//錯誤文件 ????public?$filename?=?''; ????//錯誤行號 ????public?$line?=?0; ????//額外信息 ????public?$vars?=?array(); ????protected?$_noticelog?=?'G:\notice\noticeLog.log'; ????public?function?__construct($message,?$filename,?$line,?$vars) ????{ ????????$this->message?=?$message; ????????$this->filename?=?$filename; ????????$this->line?=?$line; ????????$this->vars?=?$vars; ????} ????//根據不同錯誤級別對應不同操作 ????//遵循handler錯誤處理原則,errno:錯誤代碼,line:錯誤行號 ????public?static?function?deal($errno,$errmsg,$filename,$line,$vars) ????{ ????????$self?=?new?self($errmsg,$filename,$line,$vars); ????????switch?($errno) ????????{ ????????????case?E_USER_ERROR://致命級別 ????????????????return?$self->dealError(); ????????????????break; ????????????case?E_USER_WARNING://警告級別 ????????????case?E_WARNING: ????????????????return?$self->dealWarning(); ????????????????break; ????????????case?E_NOTICE://通知級別 ????????????case?E_USER_NOTICE: ????????????????return?$self->dealNotice(); ????????????????break; ????????????default: ????????????????return?false; ????????} ????} ????/** ?????*?如何處理致命錯誤 ?????*/ ????public?function?dealError() ????{ ????????//開啟內存緩沖 ????????ob_start(); ????????//回溯上一條信息 ????????debug_print_backtrace(); ????????$backtrace?=?ob_get_flush(); ????????$errorMsg?=?<<<EOF ????????出現了致命錯誤,如下: 產生錯誤的文件:{$this->filename} 產生錯誤的信息:{$this->message} 產生錯誤的行號:{$this->line} 追蹤信息:{$backtrace} EOF; ????error_log($errorMsg,1,'[email protected]'); ????exit(1); ????} ????/** ?????*?如何處理警告錯誤 ?????*/ ????public?function?dealWarning() ????{ ????????$errorMsg?=?<<<EOF ????????出現了警告錯誤,如下: 產生警告的文件:{$this->filename} 產生警告的信息:{$this->message} 產生警告的行號:{$this->line} EOF; ????????return?error_log($errorMsg,1,'[email protected]'); ????} ????/** ?????*?如何處理通知錯誤 ?????*/ ????public?function?dealNotice() ????{ ????????$datetime?=?date('Y-m-d?H:i:s',time()); ????????$errorMsg?=?<<<EOF ????????出現了通知錯誤,如下: 產生通知的文件:{$this->filename} 產生通知的信息:{$this->message} 產生通知的行號:{$this->line} 產生通知的時間:{$datetime} EOF; ????????return?error_log($errorMsg,3,$this->_noticelog); ????} }
查看全部 -
一個簡單的調用查看全部
-
這個set_exception_handler是來拯救的查看全部
-
想寫入一個文件之前的報錯排查查看全部
-
幾個try怎么套查看全部
-
經典(這個視頻可以看看)查看全部
-
//設置錯誤級別來開啟或關閉錯誤顯示 error_reporting(0); //不顯示所有錯誤 error_reporting(-1); //顯示所有錯誤 //也可以通過ini_set函數設置 ini_set('error_reporting',0); //不顯示所有錯誤,0代表不顯示,-1代表顯示所有 ini_set('error_reporting',-1);//顯示所有錯誤 //或者通過設置display關閉錯誤顯示 ini_set('display_errors',0); //0代表關閉錯誤顯示,1代表開啟查看全部
-
自己定義錯誤提示查看全部
-
不顯示錯誤 記錄到錯誤日志中 記錄到系統日志中查看全部
-
一個簡單的登陸錯誤報告查看全部
舉報
0/150
提交
取消