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