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


Posted in PHP onJune 22, 2014

直接上代码

<?php
//exceptionHandle.php xiecongwen 20140620
//define('DEBUG',true);
/**
* Display all errors when APPLICATION_ENV is development.
*/
if (defined('DEBUG')) {
error_reporting(E_ALL);
ini_set("display_errors", 1);
}
if(!defined('DEBUG')){
/**
* 当发生重大错误时 写日志 并友好提示用户
* (PS:只所以将代码写在这里,是因为在其他地方注册时,出现问题无法调用配置函数.待完善...)
*/
function shutdownHandler()
{
/**
* 写日志 此处直接写在根目录下shutdownlog.txt
*/
$lasterror = error_get_last();
if($lasterror){
$error = strval(date("Y-m-d h:i:s")).'=>'."[SHUTDOWN] lvl:" . $lasterror['type'] . " | msg:" . $lasterror['message'] . " | file:" . $lasterror['file'] . " | ln:" . $lasterror['line']."\n";
file_put_contents('./log/'.date("Ymd").'shutdownlog.txt',$error,FILE_APPEND);
//友好提示用户
ob_end_clean();
die('对不起,我出错了!');
}
}
register_shutdown_function('shutdownHandler');
}
if(!defined('DEBUG')){
 
function errorHandler($errno, $errstr = '', $errfile = '', $errline = 0)
{
//写日志
$exception = new \ErrorException($errstr, 0, $errno, $errfile, $errline);
$msg = strval(date("Y-m-d h:i:s")).'=>'.'Type:'.getErrTypeName($errno).' '.getMsg($exception);
file_put_contents('./log/'.date("Ymd").'error.txt',$msg,FILE_APPEND);
switch ($errno)
{
case E_NOTICE:return ;
case E_DEPRECATED:return;
}
throw $exception;
}
function getErrTypeName($errno)
{
switch ($errno)
{
case E_NOTICE:return 'E_NOTICE' ;
case E_DEPRECATED:return 'E_DEPRECATED';
default:return $errno;
}
}
function exceptionHandler($ex)
{
$msg = strval(date("Y-m-d h:i:s")).'=>'.getMsg($ex);
file_put_contents('./log/'.date("Ymd").'exception.txt',$msg,FILE_APPEND);
}
function getMsg($exception)
{
//获取最准确的异常 
while($exception->getPrevious())$exception = $exception->getPrevious();
$msg = ' Message: '.$exception->getMessage();
$msg .= ' File: '.$exception->getFile().':'.$exception->getLine()."\n";
return $msg;
}
set_error_handler('errorHandler',E_ALL);
set_exception_handler('exceptionHandler');
}
?>
PHP 相关文章推荐
php smarty模版引擎中的缓存应用
Dec 11 PHP
用php实现的下载css文件中的图片的代码
Feb 08 PHP
php入门学习知识点三 PHP上传
Jul 14 PHP
你可能不知道PHP get_meta_tags()函数
May 12 PHP
PHP+memcache实现消息队列案例分享
May 21 PHP
php实现读取内存顺序号
Mar 29 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
Dec 29 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
Mar 21 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
Laravel中使用Queue的最基本操作教程
Dec 27 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
Apr 02 PHP
Laravel框架中缓存的使用方法分析
Sep 06 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 #PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
Jun 22 #PHP
PHP延迟静态绑定示例分享
Jun 22 #PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 #PHP
解决cPanel无法安装php5.2.17
Jun 22 #PHP
destoon设置自定义搜索的方法
Jun 21 #PHP
destoon后台网站设置变成空白的解决方法
Jun 21 #PHP
You might like
php高级编程-函数-郑阿奇
2011/07/04 PHP
php 文件上传实例代码
2012/04/19 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
Knockoutjs快速入门(经典)
2012/12/24 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
script的async属性以非阻塞的模式加载脚本
2013/01/15 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
解决yum对python依赖版本问题
2019/07/05 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
Python实现像awk一样分割字符串
2020/09/15 Python
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
冬季安全检查方案
2014/05/23 职场文书
二手车转让协议书
2015/01/29 职场文书
辞职信格式模板
2015/02/27 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers