PHP排错方法
23 / 06 / 2018 buling

PHP很多时候遇到问题很难定位,比如,微信支付回调的时候 ,明明代码报错了,但很难定位到什么问题导致了错误,这个时候可以用如下代码来定位

define(ROOT_PATH, '/tmp');
//注册结束回调
register_shutdown_function( function(){
    $error = error_get_last();
    if($error){
        file_put_contents(ROOT_PATH.'/some-error.txt', 'error:'.json_encode($error));
    }
} );
//监听错误回调
set_error_handler( function($num, $str, $file, $line, $context = null){
    file_put_contents(ROOT_PATH.'/some-error.txt', 'error:'.$num.';'.$str.';'.$file);
} );
//监听异常回调
set_exception_handler( function(Exception $e){
    file_put_contents(ROOT_PATH.'/some-error.txt', 'error:'.$e->getLine().';'.$e->getMessage().';'.$e->getFile());
} );
//显示所有错误信息
error_reporting( E_ALL );
,
0