后花院 | 静心思考

敦兮其若朴,旷兮其若谷

<?php
/**
 * 输出捕获到的错误信息(包含致命错误)
 * 用到的函数有:
 * 1、register_shutdown_function()----脚本执行完成或意外死掉导致PHP执行即将关闭时,这个函数将会被调用
 * 2、set_error_handler()----脚本执行完成或意外死掉导致PHP执行即将关闭时,这个函数将会被调用
 * 3、error_get_last()----函数返回最后发生的错误(以关联数组的形式)
 */
register_shutdown_function( "fatal_handler" );
set_error_handler("error_handler");

define('E_FATAL',  E_ERROR | E_USER_ERROR |  E_CORE_ERROR | E_COMPILE_ERROR | E_RECOVERABLE_ERROR| E_PARSE );//获取fatal error
function fatal_handler() {
    $error = error_get_last();
    if($error && ($error["type"]===($error["type"] & E_FATAL))) {
        $errno   = $error["type"];
        $errfile = $error["file"];
        $errline = $error["line"];
        $errstr  = $error["message"];
        error_handler($errno,$errstr,$errfile,$errline);
  }
}
//获取所有的error
function error_handler($errno,$errstr,$errfile,$errline){
    $str=<<<EOF
         "errno":$errno<br>
         "errstr":$errstr<br>
         "errfile":$errfile<br>
         "errline":$errline<br>
         <br>
EOF;
    //获取到错误可以自己处理,比如记Log、报警等等
    echo $str;
}
// testst();//测试不存在的函数testst(),输出获取的错误信息
评论

© 后花院 | 静心思考 | Powered by EMLOG | Theme by NIMA

友情链接:Nutcracker