MyErrorHandler.php
<?php
class MyErrorHandler
{
public $message = '';
public $filename = '';
public $line = 0;
public $var = array();
protected $_noticeLog = 'D:\error\noticeLog.log';
public function __construct($message, $filename, $line, $vars)
{
$this->message = $message;
$this->filename = $filename;
$this->line = $line;
$this->vars = $vars;
}
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->dealWaining();
break;
case E_NOTICE:
case E_USER_NOTICE:
return $self->dealNotice();
break;
default:
return false;
}
}
/**
* 如何處理致命錯(cuò)誤
*/
public function dealError()
{
ob_start();//打開輸出緩沖區(qū)柠横,所有的輸出信息不在直接發(fā)送到瀏覽器
debug_print_backtrace();//打印 PHP回溯
$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, '403133112@qq.com');
exit(1);
}
/**
* 如何處理警告
*/
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, '403133112@qq.com');
}
/**
* 如何處理通知級(jí)別的錯(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);
}
}
?>
test.php
<?php
header('content-type:text/html:charset=utf-8');
require_once 'MyErr orHandler.php';
error_reporting(-1);
ini_set('display_errors', 0);
set_error_handler(array('MyErrorHandler', 'deal'));
echo $test;
//settype($var, 'king');
//test();
trigger_error('我是手動(dòng)拋出的致命錯(cuò)誤', E_USER_ERROR);//郵件接收
echo "this is a test";//無執(zhí)行
?>
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者