Показать сообщение об ошибке 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