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

时间:2017-02-08 09:08:10

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

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

我设置了一个生成致命错误的测试页面 - 调用未定义的函数functiondoesnotexist()...

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

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

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

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

但是,它没有显示客户错误页面(500.php) - 这在直接加载时有效。

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

1 个答案:

答案 0 :(得分:0)

要在IIS下的PHP站点中将自定义静态文件显示为500错误,在通过IIS UI配置自定义页面后,您需要编辑web.config文件并找到httpErrors部分。在此配置节点中,您必须将existingResponse属性设置为"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节点中File属性设置为error

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

HTH