Назад | Перейти на главную страницу

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

Я использую 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