php - IIS7.5 上 PHP 站点的自定义 500 页面

标签 php error-handling iis-7.5 error-reporting wsod

我有一个在 Windows 2008 R2 服务器 (IIS7.5) 上运行的 PHP (5.3) 站点,我正在尝试显示一个自定义的 500 页面。

我已经设置了一个测试页面,它会生成一个 fatal error - Call to undefined function functiondoesnotexist() in...

如果我将脚本中的错误处理设置为:

ini_set('display_errors', 1);
error_reporting(E_ALL);)

我确实在页面上看到了错误,但页面返回了 200 代码。

如果我关闭错误报告,我只是得到一个空白页面(根本没有源代码),但状态是 500

但是,它不显示客户错误页面 (500.php) - 直接加载时可以正常工作。

有谁知道我错过了什么?谢谢

最佳答案

要在 IIS 下的 PHP 站点中将自定义静态文件显示为 500 错误,通过 IIS UI 配置自定义页面后,您需要编辑 web.config 文件并找到 httpErrors部分。在此配置节点中,您必须设置 existingResponse属性(property)给 "Replace"这样 fastCGI 使用默认的 IIS 响应而不是 PHP 使用的 fastCGI 响应。

您的 web.config 文件部分应如下所示:
<httpErrors existingResponse="Replace"> <remove statusCode="500" subStatusCode="-1" /> <error statusCode="500" prefixLanguageFilePath="" path="MyCustom500Errorpage.html" responseMode="File" /> </httpErrors>
注意根节点中的属性和 responseMode属性设置为 Fileerror节点。

该文件位于根文件夹中。如果您使用了任何图像、脚本或 .css 文件,请确保您使用的是与根文件夹相关的路径(例如:"/Images/MyLogo.png" 等...)。

高温高压

关于php - IIS7.5 上 PHP 站点的自定义 500 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108830/

相关文章:

php - 如何使用 PHPUnit 的模拟测试名为 "method()"的方法?

c++ - 错误处理范式 : Mixing Exceptions and Error Codes

error-handling - 如何使用 ColdFusion 11 从 application.cfc 中的 onError 函数重新触发默认错误屏幕?

asp.net - 将 AJAX 调用从 IIS6 移动到 IIS7.5,在 System.Web.Handlers.ScriptModule.OnPostAcquireRequestState 上失败

asp.net - 覆盖asp.net/IIS错误页面

asp.net - 在虚拟目录中运行时,System.Web.Optimization 包为空

php - 将 Url 列表转换为 ip?

php - 是否可以在类中使用 cURL 回调函数?

php - 使用 PHP 更新数据库条目不适用于文本字段

Java:捕获系统错误