-
查看全部
-
笔记链接:处理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,'xxxx@qq.com'); exit(1); } /** * 如何处理警告错误 */ public function dealWarning() { $errorMsg = <<<EOF 出现了警告错误,如下: 产生警告的文件:{$this->filename} 产生警告的信息:{$this->message} 产生警告的行号:{$this->line} EOF; return error_log($errorMsg,1,'xxx@qq.com'); } /** * 如何处理通知错误 */ 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
提交
取消