www.adminn.cn
站长正能量分享网!

分享一个php 的异常处理程序

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

给大家分享一个php的异常处理程序,功能很简单当发生重大错误时,写日志并友好提示用户,用处却很大,对不对,直接上代码:

  1. <?php 
  2. //exceptionHandle.php xiecongwen 20140620 
  3. //define('DEBUG',true); 
  4. /** 
  5. * Display all errors when APPLICATION_ENV is development. 
  6. */ 
  7. if (defined('DEBUG')) { 
  8. error_reporting(E_ALL); 
  9. ini_set("display_errors", 1); 
  10. if(!defined('DEBUG')){ 
  11. /** 
  12. * 当发生重大错误时 写日志 并友好提示用户 
  13. * (PS:只所以将代码写在这里,是因为在其他地方注册时,出现问题无法调用配置函数.待完善…) 
  14. */ 
  15. function shutdownHandler() 
  16. /** 
  17. * 写日志 此处直接写在根目录下shutdownlog.txt 
  18. */ 
  19. $lasterror = error_get_last(); 
  20. if($lasterror){ 
  21. $error = strval(date("Y-m-d h:i:s")).'=>'."[SHUTDOWN] lvl:" . $lasterror['type'] . " | msg:" . $lasterror['message'] . " | file:" . $lasterror['file'] . " | ln:" . $lasterror['line']."\n"
  22. file_put_contents('./log/'.date("Ymd").'shutdownlog.txt',$error,FILE_APPEND); 
  23. //友好提示用户 
  24. ob_end_clean(); 
  25. die('对不起,我出错了!'); 
  26. register_shutdown_function('shutdownHandler'); 
  27. if(!defined('DEBUG')){ 
  28.    
  29. function errorHandler($errno$errstr = ''$errfile = ''$errline = 0) 
  30. //写日志 
  31. $exception = new \ErrorException($errstr, 0, $errno$errfile$errline); 
  32. $msg = strval(date("Y-m-d h:i:s")).'=>'.'Type:'.getErrTypeName($errno).' '.getMsg($exception); 
  33. file_put_contents('./log/'.date("Ymd").'error.txt',$msg,FILE_APPEND); 
  34. switch ($errno
  35. case E_NOTICE:return ; 
  36. case E_DEPRECATED:return
  37. throw $exception
  38. function getErrTypeName($errno
  39. switch ($errno
  40. case E_NOTICE:return 'E_NOTICE' ; 
  41. case E_DEPRECATED:return 'E_DEPRECATED'
  42. default:return $errno
  43. function exceptionHandler($ex
  44. $msg = strval(date("Y-m-d h:i:s")).'=>'.getMsg($ex); 
  45. file_put_contents('./log/'.date("Ymd").'exception.txt',$msg,FILE_APPEND); 
  46. function getMsg($exception
  47. //获取最准确的异常  
  48. while($exception->getPrevious())$exception = $exception->getPrevious(); 
  49. $msg = ' Message: '.$exception->getMessage(); 
  50. $msg .= ' File: '.$exception->getFile().':'.$exception->getLine()."\n"
  51. return $msg
  52. set_error_handler('errorHandler',E_ALL); 
  53. set_exception_handler('exceptionHandler'); 
  54. ?> 

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《分享一个php 的异常处理程序》
文章链接:https://www.adminn.cn/news/8721.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

2次开发,学习研究使用!扫码支付后联系QQ677123发货!

支付宝扫一扫打赏