Регистрация ошибок PHP - могу ли я записать все ошибки сайта в один файл? - PullRequest
2 голосов
/ 22 апреля 2010

в PHP.INI, я могу установить переменную «error_log», и в настоящее время она установлена ​​на «error_log», которая управляет одним файлом с таким именем в каждом каталоге

Знаете ли вы ... если я установлю его в "public_html / error_log" - я получу только один файл журнала ошибок? Есть ли другой способ сделать это? Я действительно просто хочу проверить один файл ошибок всего сайта, а не один в каждом подкаталоге.

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

Оставлено в качестве упражнения для читателя - могу ли я игнорировать некоторые "ошибки", которые на самом деле не так?

Ответы [ 4 ]

1 голос
/ 23 апреля 2010

Я думаю, что ответ - да, это должно сработать.

Что касается электронной почты, knittl дал правильный ответ, но есть риски. 1 - вы можете получить флуд электронной почты, 2 - это может замедлить доставку страницы, потому что некоторым методам отправки электронной почты в PHP требуется несколько секунд, чтобы вернуть управление вызывающему скрипту, что является проблемой, если он еще не отправил результаты клиенту.

Если вы хотите получать уведомления по электронной почте, вы можете рассмотреть альтернативный подход, например, скрипт, запускаемый cron, который отправляет вам электронное письмо, если журнал был записан с момента последнего запуска. Это решает обе проблемы, и вы можете контролировать максимальную скорость отправки электронных писем по частоте выполнения сценария.

1 голос
/ 23 апреля 2010

Если вы используете PHP под Apache, вы можете установить директивы php в файле .htaccess, поэтому для каждого сайта или даже для каталога см. http://php.net/manual/en/configuration.changes.php

1 голос
/ 22 апреля 2010

вы можете использовать set_error_handler и установить его в функцию, которая регистрирует его в файл (и игнорирует определенные типы ошибок, если хотите) и отправляет электронное письмо

function myErrorHandler($errno, $errstr, $errfile, $errline) {
  // check if we want to log the error
  // log the error
  // send the mail
}

set_error_handler('myErrorHandler');
0 голосов
/ 22 апреля 2010

Указание абсолютного пути для error_log, например

/var/logs/php.err

в php.ini сделает этот файл системным журналом ошибок по умолчанию системным. Затем вы можете выполнить ведение журнала для каждого сервера / каталога, поместив директивы override error_log в соответствующие настройки виртуального хоста / каталога (например, файлы Apach для site.conf, .htaccess и т. Д.), Если вам нужно вести журнал в определенных областях по-разному.

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