0
点赞
收藏
分享

微信扫一扫

php debug error

register_shutdown_function('debug_error',debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS));
//调试错误信息
if(!function_exists('debug_error'))
{
    $GLOBALS['argv']=$argv;
    $GLOBALS['argc']=$argc;
    $GLOBALS['_server']=$_SERVER;
    function debug_error($backtraceList=[])
    {
        $lastError=error_get_last();
        if(!is_null($lastError))
        {
            $errorMessage=$backtrace = "";
            $errorMessage.="【错误类型】:{$lastError['type']}。【错误信息】:{$lastError['message']}。【出错文件】:{$lastError['file']}。【文件行数】:{$lastError['line']}。";
            if(is_array($backtraceList) && !empty($backtraceList))
            {
                foreach ($backtraceList as $v)
                {
                    $backtrace .= "{$v['file']} - {$v['line']} - {$v['class']}::{$v['function']}()".'。';
                }
            }

            $errorMessage.="【调用堆栈】:{$backtrace}";

            //显示访问路径
            $sapiName = php_sapi_name();
            if($sapiName !== false)
            {
                if($sapiName != 'cli')
                {
                    //http请求方式
                    if(!empty($GLOBALS['_server']) && isset($GLOBALS['_server']['HTTP_REFERER']) && isset($GLOBALS['_server']['HTTP_HOST']) && isset($GLOBALS['_server']['SCRIPT_URL']) && isset($GLOBALS['_server']['QUERY_STRING']))
                    {
                        $errorMessage.="【上级URL】:{$GLOBALS['_server']['HTTP_REFERER']}。【当前URL】:{$GLOBALS['_server']['HTTP_HOST']}{$GLOBALS['_server']['SCRIPT_URL']}?{$GLOBALS['_server']['QUERY_STRING']}。【script】:{$GLOBALS['_server']['SCRIPT_URL']}。";
                    }
                }
                else
                {
                    // 后面的参数
                    $paramString="";
                    for ($i=2; $i<$GLOBALS['argc']; $i++)
                    {
                        $paramString.=" {$GLOBALS['argv'][$i]} ";
                    }
                    //$errorMessage .= "【CLI请求路由参数】{$paramString} ";

                    //cli请求方式
                    $errorMessage .= "【CLI请求】{$GLOBALS['argv'][0]} {$GLOBALS['argv'][1]} {$paramString}";
                }
            }

            $errorMessage = str_replace(array("\r\n", "\r", "\n","   "), '', $errorMessage);
            error_log("CUSTOM_ERROR".$errorMessage);
            unset($errorMessage,$backtrace);
        }
    }
}
举报

相关推荐

0 条评论