我在Windows 2008 R2服务器(IIS7.5)上运行了一个PHP(5.3)站点。我试图显示自定义的500页。
我设置了一个生成致命错误的测试页面 - 调用未定义的函数functiondoesnotexist()...
如果我在脚本中将错误处理设置为:
ini_set('display_errors', 1);
error_reporting(E_ALL);)
我确实看到页面上的错误,但页面返回200代码。
如果我关闭错误报告,我只会得到一个空白页面(根本没有源代码),但状态为500
但是,它没有显示客户错误页面(500.php) - 这在直接加载时有效。
有谁知道我错过了什么?感谢
答案 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