繁体   English   中英

PHP的自定义错误处理程序如何在生产中打印错误?

[英]php custom error handler how to print error in production?

我有一个接口,通过ajax调用一些php函数。

我仅在生产中存在未捕获的错误。 由于我大量使用getJson数据交换,因此需要使用自定义php错误处理程序使错误和警告静音。

问题是,无论如何,当代码在生产中产生错误时,我希望将其打印出给用户,以了解问题出在哪里。 我的代码是:

function myErrorHandler($errno, $errstr, $errfile, $errline)
{

switch ($errno) {
case E_ERROR:
    case E_USER_ERROR:
    $error= "<b>My ERROR</b> [$errno] $errstr<br />\n";
    $error.= "  Fatal error on line $errline in file $errfile";
    $error.= ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
    $error.= "Aborting...<br />\n";
    if(isAjaxCalling()){
        $_SESSION['Errors']['Errors'][]=$error;
    }

    ini_set('display_errors',1);
    ini_set('error_reporting','E_ALL');
    echo $error;
    exit(1);
    break;
case E_WARNING:
case E_USER_WARNING:

....

}

您需要让客户端的ajax处理程序知道返回的值实际上是一条错误消息,最好使用状态标头来做到这一点:

header("HTTP/1.0 500 Internal server error");

然后,针对每个ajax请求全局设置或单个设置设置将处理错误的函数。 在jQuery中,如何全局执行: http : //api.jquery.com/ajaxError/或单独设置ajax请求的“错误”选项。

似乎现在已经用这个mod打印了:

case E_ERROR:
case E_USER_ERROR:
$error= "<b>My ERROR</b> [$errno] $errstr<br />\n";
$error.= "  Fatal error on line $errline in file $errfile";
$error.= ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
$error.= "Aborting...<br />\n";
if(isAjaxCalling()){
    $_SESSION['Errors']['Errors'][]=$error;
}

exit( $error);
break;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM