手机版

用PHP捕获错误并实时发送电子邮件通知的实现代码

时间:2021-10-05 来源:互联网 编辑:宝哥软件园 浏览:

所有开发php的朋友都知道,事实上,他们最担心的是程序中的一些异常或错误。如果将这些条件输出到用户的屏幕上,就会吓到用户,甚至丢掉工作。如果它们没有输出到屏幕上,他们必须想办法将它们记录在日志中。但是,似乎不是每个人都有查看错误日志的习惯。为了解决这个尴尬的问题,我写了这段代码,目的是在我们编写的PHP程序出现问题时,捕捉错误内容并发送到我们的邮箱。先看效果。

复制代码如下: Define('SYS_DEBUG ',false);IF(SYS _ DEBUG){ ini _ set(' display _ errors ',' on ');错误报告;//联机后使用此设置error _ reporting(e _ error | e _ warning | e _ parse);}Else{ ini_set('display_errors ',' off ');error _ reporting(0);}//错误捕获寄存器_ shut down _ fun(' fun :3360 error ');Class Fun{ /**一般错误处理参数:输出什么,是否停止执行程序描述:这个函数可以用来在传递一个值的时候输出用户自定义的错误内容,另外可以配合Register _ shutdown _函数自动抓取错误内容。将捕获到的错误内容发送到Email中的Register _ shut _ function的机制是在程序执行完毕或中间出现错误时调用该函数。如果在自动捕获错误时调用它,将获得最后一个错误的内容。如果没有发现错误内容,的内容会直接输出到屏幕上或者使用: Fun:Error in Email('错误内容');Fun:Error错误('错误内容',False);/**/公共静态函数错误($M=' ',$ E=True){ $ ErrTpl=' hearteta http-equiv=' Content-Type ' Content=' text/html;charset=UTF-8 '/headsdytable cell spacing=' 0 ' cell padding=' 0 ' border=' 0 ' trtd style=' padd :5 px;背景-color : # F57900;font-size :13 px;border:1px固体# 444;color: # 222{ $ M }/TD/tr/table ';$ M=Trim($ M);IF(M!=' '){//手动调用$M='注意: '。M美元;Echo Strtr($ErrTpl,Array(' { $ M } '=$ M));unSet($ ErrTpl);IF($ E===True){ Die();}返回;}Else{//调用$M=error_get_last()当程序执行后自动捕捉错误;//获取最后一个错误IF(!Is_array($M)或Count($ M)4){ Unset($ M);返回;} IF(!file _ Exists($ M[' file ']){ Unset($ M);返回;}//获取5行错误键码。如果内容不可用,则表示错误文件eucalyptus不存在$ e=array _ slice (file ($ m ['file']),($ m ['line']-4,5);IF(!Is_array($E)) {Unset($M,$ E);返回;} $ E[' M ']=' ';for($ I=0;$ i5$i ) { $E[$i]=isSet($E[$i])?$ E[$ I]:“”;$E['M']。='';$E['M']。=($i==3)?''.(($ M[' line ']-3)($ I ^ 1))。' :($ M[' line ']-3)($ I 1));$E['M']。=': '.Htmlspecialchars($E[$i],ENT_QUOTES,' UTF-8 ')。br ';} $ E=$ E[' M '];$M='错误被自动捕获!Brbr错误描述:br '。$M['行']。第:br '行。$M['文件']。有一个类型为:br '的错误。$M['消息']。brbr密钥代码:br。$M=Strtr($ErrTpl,Array(' { $ M } '=$ M));unSet($ ErrTpl);$ G=seft :3360 getg(' SYS ',' config ');IF(!Self:Mail2($G['Spe'],'警告: '。$G['Tit']'出现PHP程序错误!$ m)和sys _ debug===true){ Thrownewexception('警告: '。$G['Tit']'出现PHP程序错误!brbr。M美元);} IF(SYS _ DEBUG){ Echo $ M;} unSet($E,$M,$ G);die();}}/* *发送电子邮件参数:收件人、电子邮件标题(不允许使用换行符)、电子邮件内容(各行必须用\n分隔,每行不得超过70个字符)说明:调用PHP内置函数Mail发送电子邮件返回3360返回布尔值用法3360 $ issend=fun 33603360 Mail 2($ email)。/* */public static function mail 2($ to,$ tit,$ msg) {if (filter _ var ($ to,filter _ validate _ email)=' '){抛出新的异常('电子邮件地址错误!);} $tit='=?UTF 8号?b? Base64_Encode($tit .)'?=';$msg=str_replace('\n . ',' \n.$ msg);//Windows如果在一行的开头发现一个句点,将被删除。为了避免这个问题,将单个周期替换为两个周期的return mail ($ to,$ tit,$ msg,' from : '。' seft :3360 getg(' config/sys/mal '),'\ n“.”内容类型3330。charset=utf-8 ');} }

版权声明:用PHP捕获错误并实时发送电子邮件通知的实现代码是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

相关文章推荐