У меня есть сайт PHP (5.3), работающий на сервере Windows 2008 R2 (IIS7.5) & Я пытаюсь получить пользовательский показ 500 страниц.
Я установил тестовую страницу, которая генерирует фатальную ошибку — вызов неопределенной функции functiondoesnotexist () в …
Если я установлю обработку ошибок в сценарии:
ini_set('display_errors', 1);
error_reporting(E_ALL);)
Я вижу ошибку на странице, НО страница возвращает код 200.
Если я отключаю отчеты об ошибках, я просто получаю пустую страницу (без исходного кода вообще), но статус 500
Тем не менее, он не показывает обычную страницу ошибки (500.php) — которая работает при прямой загрузке.
Кто-нибудь знает, что мне не хватает? Спасибо
Чтобы пользовательский статический файл отображался как ошибка 500 на сайте PHP в IIS, после настройки пользовательской страницы через пользовательский интерфейс IIS необходимо отредактировать файл web.config и найти httpErrors
раздел. В этом узле конфигурации вы должны установить existingResponse
собственность на "Replace"
так что fastCGI использует ответ IIS по умолчанию вместо ответа fastCGI, который использует PHP.
Ваш раздел файла 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"
так далее…).
НТН
Других решений пока нет …