Як я можу відображати та фіксувати помилки 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 на Detailed від DetailedLocalOnly. Очевидно, це означає, що кожен, хто переглядає ваш сайт, зможе побачити помилку.

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

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

Якщо ви хочете зберегти їх локальними, ви можете скористатися віддаленим робочим столом, щоб увійти на сервер і запустити додаток, якщо зможете.


1
Так, я перевірив, і все правильно налаштовано.
Бен

Додано ще трохи інформації про усунення несправностей
Сем Коган

1
Змінення режиму помилки на "Детально" з "DetailedLocalOnly" зробило свою справу. Спасибі!
Бен

1
Мені довелося також видалити колекцію помилок HTTP під system.webServer. Не працював з PHP, поки я цього не зробив.

1
Будь ласка, підкресліть це system.webServerмоєю кров’ю та додайте примітку: "Так, є комбо".
DiGi

2

Просто хотів додати, що "существующую реакцию" слід встановити на "PassThrough". Я не отримав жодних реальних повідомлень про помилки без додаткового налаштування.


1
Де знаходиться цей параметр?
Євген Мала

0

Це можна легко зробити за допомогою інтерфейсу інтерфейсу IIS Manager. Виберіть свій сайт і двічі клацніть Сторінки помилок. Потім натисніть "Редагувати параметри функції ..." та виберіть опцію "докладні помилки" замість типових "детальні помилки для локальних запитів та користувацькі сторінки помилок для віддалених запитів". Вуаля, просто так!


Де тоді можуть бути показані журнали та помилки?
JukEboX

0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.