【PHP错误捕获分享】PHP捕获应用错误 简单记录并友好处理展示

时间:2023年05月11日

/

来源:网络

/

编辑:佚名

为了某种目的而需要捕获系统错误,在此简单分享下某个项目中的捕获方法。 
 默认php错误如图 

 index.php 
/**
 * 捕获应用错误记录
 */
function ef_error_record($errno,$errstr,$errfile,$errline){
    $e = array("no"=>$errno,"str"=>$errstr,"file"=>$errfile,"line"=>$errline);
        ef_error_display("record",$e);
}
/**
 * 错误中断显示
 */
function ef_error_display($method='',$option=''){
    static $e = array();
    if($method=='record'){
        $e[] =  $option;
        return true;
    }else if(!empty($e)){
        include ('/common/template/error.php');
        exit();
    }
    return true;
}
        //禁止错误输出
        error_reporting(0);
        //设置自定义错误函数 捕获系统错误并记录
    set_error_handler("ef_error_record");
    //注册结束脚本函数 该函数会有意外或正常结束脚本触发(同析构函数)
    register_shutdown_function("ef_error_display");
复制
error.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>EFrame 运行错误</title>
<style type="text/css">
body {
background-color:    #fff;
margin:                40px;
font-family:        Lucida Grande, Verdana, Sans-serif;
font-size:            12px;
color:                #000;
}
#content  {
border:                #999 1px solid;
background-color:    #fff;
padding:            20px 20px 12px 20px;
}
h1 {
font-weight:        normal;
font-size:            16px;
color:                #990000;
margin:             0 0 4px 0;
}
span {
color:                #990000;
}
.msg p{
    color:#990000;
}
.file{
    text-indent:15px;;
}
</style>
</head>
<body>
    <div id="content">
        <h1>EFrame 运行错误</h1>
        <?php
            foreach($e as $key=>$val){
                echo "<div class=\"msg\"><p><span>[".($key+1)."]</span> {$val['str']} </p></div>",
                "<div class=\"file\"><p>".$val['file']." 行: <span>{$val['line']}</span></p></div>";
            }
            ?>    </div>
</body>
</html>
复制
最终错误错误页面(当然页面可以自己修改想要的样式):
猜你需要

豫ICP备2021026617号-1  豫公网安备:41172602000185   Copyright © 2021-2028 www.78moban.com/ All Rights Reserved

本站作品均来自互联网,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如有侵犯您的版权,请联系 1565229909#qq.com(把#改成@),我们将立即处理。