Ведение журнала ошибок на уровне отдельных приложений PHP

#php #apache #logging #iis

#php #апач #Протоколирование #iis #apache

Вопрос:

Использование IIS 8.8 и PHP

Как я могу записывать ошибки приложения в файл в IIS? У меня это работает в моей среде localhost XAMPP, но, похоже, не работает при переходе на сервер IIS, в котором у меня мало опыта.

В моем приложении у меня есть файл config.php , он включен на каждую страницу моего приложения и содержит следующее;

 <?php
error_reporting(E_ALL);
ini_set('display_errors', 'Off');
ini_set('log_errors', 1);
ini_set('error_log', 'C:inetpubwwwrootmy_applogserr_log'); 
ini_set('date.timezone', 'Europe/London');
?>
  

Однако ничего не регистрируется в err_log — должен ли я изменить что-то еще в настройках IIS?

У меня будет несколько приложений на этом сервере, и я хотел бы настроить отдельные файлы журнала приложений для каждого из них, например

  • C:inetpubwwwrootmy_applogserr_log
  • C:inetpubwwwrootanother_applogserr_log
  • C:inetpubwwwrootyet_another_applogserr_log

Ответ №1:

При развертывании приложения в IIS на сервере Windows IIS может записывать ошибки, связанные с ответами на http-запросы, такие как коды состояния ошибки и подробные сообщения об ошибках. Ошибки в вашем php-приложении (ошибки во время выполнения приложения) требуют настройки с помощью кода php или файла конфигурации, чтобы приложение могло выводить информацию об ошибках в указанный файл, и IIS не может записывать внутренние ошибки приложения.

Поэтому, если вы используете config.php файл для настройки файла журнала, который используется для записи http-ошибки, он не будет работать, потому что только файл web.config может настраивать IIS. Если он использовался только для записи ошибок в приложении, вам необходимо проверить код php или получить помощь на форумах, связанных с php.

Есть два способа записать ошибку в IIS.

  1. В модуле ведения журнала вы можете настроить папку журнала, формат записи журнала, назначение события журнала, перенос файла журнала. В итоговом файле журнала будет записано время получения запроса, IP-адрес запроса, URL-адрес запроса, код состояния и подкод состояния и т. Д.
  2. В модуле отслеживания запросов на отказ вы можете подробно записать весь процесс запроса и ответа.Когда запрос поступает в iis, в какой модуль он поступил, как модуль обработал запрос и результат обработки будут записаны. Это очень помогает в устранении неполадок

Комментарии:

1. Спасибо за этот подробный ответ. Так что в принципе это невозможно при использовании моей текущей конфигурации. Я нахожу удивительным, что в IIS нет способа записывать ошибки PHP, я думаю, мне следовало провести свое исследование и вместо этого использовать Apache, я буду знать в следующий раз!