Показать сообщение об ошибке php на IIS 7

Я использую IIS в качестве веб-сервера на моей машине разработки для веб-разработки PHP. Или, по крайней мере, я пытаюсь.

Когда в скрипте PHP возникает синтаксическая ошибка, и я открываю этот файл в своем веб-браузере, я просто получаю 503 "внутреннюю ошибку сервера" и страницу ошибки IIS по умолчанию для этой ошибки. Некоторые браузеры вообще не открывают этот файл, возможно, из-за заголовка ответа HTTP 503.

Я хотел бы, чтобы IIS действовал в этом случае так же, как веб-сервер apache: отображать PHP-файл с ошибкой, чтобы сообщение об ошибке выводилось на печать.

Как это может быть сделано?

РЕДАКТИРОВАТЬ:

Настройки PHP:

display_errors

включен и

Отчет об ошибках

установлен в E_ALL

5 ответов

Решение

В IIS7 он не пропускает ошибки по умолчанию. Это "существующий ответ", который должен быть установлен.

Вы можете установить его, выполнив следующее (не забудьте заменить {sitename} на имя вашего сайта).

c:\windows\system32\inetsrv\appcmd.exe set config "{sitename}" -section:system.webServer/httpErrors /existingResponse:"PassThrough" /commit:apphost

Чтобы включить подробные ошибки для PHP (и других языков), выполните эту команду из командной строки:

%windir%\system32\inetsrv\appcmd.exe set config -Section:system.webServer/httpErrors -errorMode:Detailed

затем

IISReset

Включите следующие две строки в верхней части вашего PHP-скрипта

ini_set('display_errors','On');

error_reporting(E_ALL | E_STRICT);

Лучшей практикой будет входить в систему "без вывода сообщений" в файле.

Но вы можете получить и то и другое, установив следующее значение в файле php.ini в файл журнала.

error_log=<File Location>

В вашем наборе php.ini:

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
display_errors = On

И если вы хотите, чтобы они вошли:

log_errors = On
Другие вопросы по тегам