1、创建MyErrorHandler.php文件

代码如下:

<?php
class MyErrorHandler {
public $message;
public $filename;
public $line;
public $vars = array();
protected $_noticeLog = 'F:\root\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($errno,$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();
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,'279921301@qq.com','From:php[error错误日志]');
exit(1);
} /**
* 警告的错误
*/
public function dealWarning() {
$errorMsg = <<<EOF
出现了警告的错误,如下:
产生警告的文件:{$this->filename}
产生警告的信息:{$this->message}
产生警告的行号:{$this->line}
EOF;
return error_log($errorMsg,1,'279921301@qq.com','From:php[error警告日志]');
} /**
* 通知的错误
*/
public function dealNotice() {
$datetime = date('Y-m-d H:i:s');
$errorMsg = <<<EOF
出现了通知的错误,如下:
产生通知的文件:{$this->filename}
产生通知的信息:{$this->message}
产生通知的行号:{$this->line}
产生通知的时间:{$datetime}
EOF;
return error_log($errorMsg,3,$this->_noticeLog);
}
}

2、测试代码

<?php
include "MyErrorHandler.php"; //报告所有 PHP 错误
error_reporting(-1); //不显示错误信息
ini_set('display_errors',0);
set_error_handler(array('MyErrorHandler','deal')); echo $test; //Notice错误
settype($var,'test'); //警告错误
test();

注意:发送邮件需要在本地配置mail函数,可以参考本人的上一篇文章如何配置mail函数发邮件。

php错误封装类的更多相关文章

  1. 航空概论(历年资料,引之百度文库,PS:未调格式,有点乱)

    航空航天尔雅 选择题1. 已经实现了<天方夜谭>中的飞毯设想.—— A——美国2. 地球到月球大约—— C 38 万公里3. 建立了航空史上第一条定期空中路线—— B——德国4. 对于孔明 ...

  2. c#生成静态html文件,封装类

    由于这段时间比较轻松,于是想到很多的企业网站,新闻网站需要将页面静态化,于是写了个封装类来实现静态文件的生成,思路比较简单,但未完善,网友可根据自己的思路将此类扩展,运用了简单工厂模式(本来刚开始看设 ...

  3. StackExchange.Redis 访问封装类

    最近需要在C#中使用Redis,在Redis的官网找到了ServiceStack.Redis,最后在测试的时候发现这是个坑,4.0已上已经收费,后面只好找到3系列的最终版本,最后测试发现还是有BUG或 ...

  4. StackExchange.Redis通用封装类分享(转)

    阅读目录 ConnectionMultiplexer 封装 RedisHelper 通用操作类封 String类型的封装 List类型的封装 Hash类型的封装 SortedSet 类型的封装 key ...

  5. SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显

    在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1. ...

  6. StackExchange.Redis通用封装类分享

    前两天朋友问我,有没有使用过StackExchange.Redis,问我要个封装类,由于之前都是使用ServiceStack.Redis,由于ServiceStack.Redis v4版本后是收费版的 ...

  7. php数据库操作封装类

    <?php /** * Desc: php操作mysql的封装类 * Author zhifeng * Date: 2015/04/15 * 连接模式:PDO */ class MMysql { ...

  8. Android UncaughtExceptionHandler,捕获错误

    最近在做个项目,需要在程序出现运行时异常和错误导致程序crash时进行一些操作,找到一个方法 Thread.setDefaultUncaughtExceptionHandler(new Uncaugh ...

  9. Java调用外部程序常用算法和封装类

    一个项目不可能只使用一种编程语言来开发,也不可能由一个人开发,所以,Java程序员要学会和使用其他编程语言的程序员合作.那么,让我来发布一个工具类--Java外接程序扩展包,并将相应算法发布.Java ...

随机推荐

  1. Wannafly挑战赛5

    珂朵莉与宇宙 时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 65536K,其他语言131072K64bit IO Format: %lld 题目描述 星神是来自宇宙的 所以珂朵莉也是吧 ...

  2. SPFA ----模板 O(kE) (k一般不超过2)

    原理:若一个点入队的次数超过顶点数V,则存在负环: #include "bits/stdc++.h" using namespace std; ; struct Edge { in ...

  3. Python3 的异常处理

    Python3 的异常处理,在官方文档的 tutorial 中有说明. 这里把常用的异常处理方法都列出来,方便平时查找. 捕获异常基类 Python3 要求我们的异常必须继承 Exception 类. ...

  4. Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)

    Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/jiangwei0910410003/article/details/51 ...

  5. ACM程序设计选修课——1058: Lucky Sequence(思考)

    1058: Lucky Sequence Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 52  Solved: 6 [Submit][Status][ ...

  6. 【MFC】 点击不同的按钮后在界面同一位置显示不同的对话框内容(转)

    原文转自 http://bbs.csdn.net/topics/391039432 如图类似Tab控件的功能    但Tab控件按钮是固定的上下左右  不方便     所以想自己重新做个这种   我M ...

  7. ASP.NET路由应用及IIS配置(非MVC)

    一.前后台代码: Global.cs: using System.Web.Routing; ... void Application_Start(object sender, EventArgs e) ...

  8. 从 React Router 谈谈路由的那些事

    React Router 是专为 React 设计的路由解决方案,在使用 React 来开发 SPA (单页应用)项目时,都会需要路由功能,而 React Router 应该是目前使用率最高的. Re ...

  9. git 中遇到的问题

    刚创建的github版本库,在push代码时出错: $ git push -u origin masterTo git@github.com:******/Demo.git ! [rejected] ...

  10. Codeforces 868F Yet Another Minimization Problem(分治+莫队优化DP)

    题目链接  Yet Another Minimization Problem 题意  给定一个序列,现在要把这个序列分成k个连续的连续子序列.求每个连续子序列价值和的最小值. 设$f[i][j]$为前 ...