Я использую IIS в качестве веб-сервера на своей машине разработки для веб-разработки PHP. По крайней мере, я пытаюсь.
Когда в сценарии PHP есть синтаксическая ошибка, и я открываю этот файл в своем веб-браузере, я просто получаю 503 «внутренняя ошибка сервера» и страницу ошибок IIS по умолчанию для этой ошибки. Некоторые браузеры вообще не открывают этот файл, возможно, из-за заголовка HTTP-ответа 503.
Я хотел бы, чтобы IIS действовал в этом случае так же, как веб-сервер apache: все равно отображать файл PHP с ошибкой, чтобы сообщение об ошибке было распечатано.
Как это может быть сделано?
РЕДАКТИРОВАТЬ:
Настройки PHP:
display_errors
горит и
Отчет об ошибках
установлен в E_ALL
В IIS7 он по умолчанию не передает ошибки. Необходимо установить "existingResponse".
Вы можете установить его, выполнив следующие действия (не забудьте заменить {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 в файл журнала
error_log=<File Location>
Включите следующие две строки в верхнюю часть вашего PHP-скрипта
ini_set('display_errors','On');
error_reporting(E_ALL | E_STRICT);
В вашем наборе php.ini:
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
display_errors = On
И если вы хотите, чтобы они регистрировались:
log_errors = On