我有一个在 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
属性设置为 File
在 error
节点。
该文件位于根文件夹中。如果您使用了任何图像、脚本或 .css 文件,请确保您使用的是与根文件夹相关的路径(例如:"/Images/MyLogo.png"
等...)。
高温高压
关于php - IIS7.5 上 PHP 站点的自定义 500 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108830/