0

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

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

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

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

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

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

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

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

4

1 回答 1

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

于 2017-05-09T11:44:11.480 回答