报告 PHP 500 个错误

Reporting PHP 500 Errors

我在 IIS7.5 服务器上有一个相当旧的程序 php 站点 运行 - 它在 Windows 框上只是因为它与经典 ASP 一起运行网站。

经典 ASP 站点有一个自定义的 500 错误页面,该页面使用 Server.GetLastError 输出提示该页面的错误的详细信息。然后将这些详细信息通过电子邮件发送给我。

在 PHP 中,我发现 error_get_last() 应该做类似的事情,但我不确定如何设置它。有没有人有在 IIS7.5 服务器上使用 error_get_last() 的经验?

我可以像下面这样输出 error_get_last() 吗?

$error = error_get_last();
if ($error !== NULL) {
    $errno   = $error["type"];
    $errfile = $error["file"];
    $errline = $error["line"];
    $errstr  = $error["message"];
    //send the email...
}

谢谢。

没有。你不能。来自 php 脚本的 500 错误意味着该脚本自行终止并吐了一地。没有错误,因为脚本已经死了。作为 500 的处理程序启动的任何其他脚本将无法获得导致 500 的内部错误 - 它是一个完全独立的脚本,具有自己的错误队列。

您最多可以让错误处理程序脚本通过服务器错误日志进行解析,但由于它是一个完全独立的脚本,您无法可靠地判断日志中的哪些错误是您想要的看看。