Как я могу отображать и регистрировать ошибки PHP на IIS7?

29

Мы запускаем PHP 5.2.5 на сервере IIS 7, и у нас возникают проблемы с отображением ошибок PHP ... В тот момент, когда у нас возникает ошибка PHP, сервер отправляет обратно ошибку 500 с сообщением «Страница не может быть отображается, потому что произошла внутренняя ошибка сервера. "

Это может быть хорошим параметром для рабочих сайтов, но это довольно раздражает на сервере разработки ... ;-)

Я попытался настроить php.iniотображение ошибок на экране, а также записать их в определенную папку, но кажется, что сервер ловит все ошибки раньше и предотвращает и обрабатывает с помощью PHP ...

Кто-нибудь знает, что мы должны сделать, чтобы IIS отображал ошибки PHP на экране? Любые ссылки, советы или учебные материалы по этому вопросу будут оценены!

Бен
источник
Во- первых, убедитесь , что у вас есть эти: log_errors=1, error_reporting=-1, log_errors_max_len=0.
Pacerier
ini_set("display_errors", "on");добавьте эти строки в php файл.
ELITE

Ответы:

35

Просто, чтобы перепроверить, есть ли у вас логирование error_reporting = E_ALLи display_errors = Onв вашем php.ini? Обычно этого достаточно для отображения этих ошибок в IIS 7.

Далее, посмотрите на ваши настройки IIS, так как они могут быть настроены так, чтобы показывать только сообщения об ошибках локально. В редакторе конфигурации IIS 7 это находится под system.webServer-> httpErrors. Вам нужно будет изменить errorMode на подробный из DetailLocalOnly. Очевидно, теперь это означает, что любой, просматривающий ваш сайт, сможет увидеть ошибку.

введите описание изображения здесь

введите описание изображения здесь

В качестве альтернативы, если вы хотите сохранить их локальными, вы можете использовать удаленный рабочий стол, чтобы войти на сервер и запустить приложение оттуда, если можете.

Сэм Коган
источник
1
Да, я проверил, и все настроено правильно.
Бен
Добавлена ​​дополнительная информация по устранению неполадок
Сэм Коган,
1
Изменение errorMode на «Detail» с «DetailLocalOnly» сделало свое дело. Благодарность!
Бен
1
Мне также пришлось удалить коллекцию ошибок HTTP в system.webServer. Не работал с PHP, пока я не сделал.
1
Пожалуйста, выделите это system.webServerмоей кровью и добавьте примечание: «Да, есть комбо».
DiGi
2

Я просто хотел добавить, что для «istingResponse »должно быть установлено« PassThrough ». Я не получил никаких реальных сообщений об ошибках без этой дополнительной настройки.

Болл
источник
1
Где находится этот параметр?
Евгений Мала
0

Вы можете сделать это легко с помощью графического интерфейса IIS Manager. Выберите свой сайт и дважды щелкните страницы ошибок. Затем нажмите «Редактировать настройки функций ...» и выберите опцию «подробные ошибки» вместо стандартных «подробных ошибок для локальных запросов и пользовательских страниц ошибок для удаленных запросов». Вуаля, все просто!

Йерун Аартс
источник
Где тогда могут быть показаны логи и ошибки?
JukEboX
0

Мне пришлось зайти в настройки веб-сервера в конфигурацию php, там есть настройка для отчетов об ошибках, и по умолчанию она настроена на работу. Пришлось изменить его в разработке даже после изменения php.ini и предложения здесь. Я использую iis 7.5 на 2008 R2.

naps1saps
источник