Как я могу отображать и регистрировать ошибки 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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.