如何在 IIS7 上显示和记录 PHP 错误?

如何在 IIS7 上显示和记录 PHP 错误?

我们在 IIS 7 服务器上运行 PHP 5.2.5,在显示 PHP 错误时遇到了问题...目前,每当我们遇到 PHP 错误时,服务器都会返回 500 错误,并显示消息“由于发生了内部服务器错误,因此无法显示该页面。”

对于生产网站来说,这可能是一个很好的设置,但对于开发服务器来说,这相当烦人... ;-)

我尝试过配置php.ini以在屏幕上显示错误以及将它们记录到特定文件夹中,但似乎服务器会先捕获所有错误并阻止 PHP 进行处理...

有人知道我们要怎么做才能让 IIS 在屏幕上显示 PHP 错误吗?如果有关于这个主题的链接、提示或教程,我将不胜感激!

答案1

再检查一下,您是否已将日志记录设置为error_reporting = E_ALL,并且display_errors = Onphp.ini通常这足以在 IIS 7 中显示这些错误。

接下来,查看您的 IIS 设置,因为它可能设置为仅在本地显示错误消息。在 IIS 7 配置编辑器中,它位于 system.webServer->httpErrors 下。您需要将 errorMode 从 DetailedLocalOnly 更改为 Detailed。显然,这意味着现在浏览您网站的任何人都可以看到错误。

在此处输入图片描述

在此处输入图片描述

或者,如果您想将它们保留在本地,您可以使用远程桌面登录到服务器并从那里运行应用程序(如果可以)。

答案2

只是想补充一下,“existingResponse”应该设置为“PassThrough”。如果没有这个额外的设置,我没有收到任何真正的错误消息。

答案3

您可以使用 IIS 管理器 GUI 轻松完成此操作。选择您的站点并双击“错误页面”。然后点击“编辑功能设置...”,并选择“详细错误”选项,而不是默认的“本地请求的详细错误和远程请求的自定义错误页面”。瞧,就这么简单!

答案4

我试过这些,但没有用。具体来说,我需要在“配置编辑器”中将“现有响应”保留为“自动”。

但是我发现如果您使用 FastCGI,则需要进入 IIS 管理器 -> 默认网站 -> FastCGI-> 然后选择c:\php\php-cgi-.exe并“编辑..”。

在“标准错误模式”下,您需要更改ReturnGeneric500ReturnStdErrIn500

如果您在 PHP.INI 中或通过 PHP 代码中的设置打开了 PHP 错误,这将显示 PHP 错误。

相关内容