Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Debug_ErrorHook: перехват ошибок PHP (даже фатальных) и их обработка - например, отправка по E-mail (Дмитрий Котеров)
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Mon May 10, 2010 10:00 pm (написано за 30 секунд)
   Post subject: Debug_ErrorHook: перехват ошибок PHP (даже фатальных) и их обработка - например, отправка по E-mail
Reply with quote

dklab.ru/lib/Debug_ErrorHook/

Эта библиотека позволяет перехватывать ошибки PHP (самое главное - включая фатальные!) вместе с красиво оформленным контекстом их возникновения (имя файла, строка, стек-трейс, переменные окружения, параметры HTTP-запроса и т.д.) и выполнять те или иные действия с этой информацией. На ошибки можно повесить функции обратного вызова (даже на Fatal Error).

Наиболее полезное применение библиотеки - отправлять нотисы, варнинги и даже фатальные ошибки PHP на адрес электронной почты разработчика. Естественно, эта отправка - "умная": если эта же самая ошибка уже происходила за последние N секунд, она не будет повторно отправлена на почту. Таким образом, ящик не зафлудится, а почтовый сервер и sendmail - не подвесит всю систему, если ваш сайт весьма популярен, но вдруг на продакшен "проскочил" какой-нибудь нотис, возникающий на каждой странице.

Commony errors and notices are sent to web server's logs and die there.
Nobody monitors server logs oftenly. If these errors are sent do developers'
emails, developers could react immediately and fix them. It is quite handy,
especially just after production deployment, and it works great especially
for fatal errors.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 387
   поощрить/наказать


PostPosted: Mon Oct 04, 2010 3:44 pm (спустя 4 месяца 24 дня 17 часов 43 минуты; написано за 1 минуту 29 секунд)
   Post subject:
Reply with quote

Что то не получается использовать вашу библиотеку. Или пример очень короткий или одно из двух :)
Напишите пожалуйста более подробный пример с инициализацие библиотеки
Back to top
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 81
   поощрить/наказать


PostPosted: Mon Oct 04, 2010 6:39 pm (спустя 2 часа 54 минуты; написано за 25 секунд)
   Post subject:
Reply with quote

Гость,
что именно у вас "не получается"?
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 387
   поощрить/наказать


PostPosted: Tue Jan 11, 2011 11:47 pm (спустя 3 месяца 7 дней 5 часов 8 минут; написано за 24 секунды)
   Post subject:
Reply with quote

Какой или какие файлы необходимо подключить при использовании твоего примера?
Back to top
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9993
   поощрить/наказать


PostPosted: Wed Jan 12, 2011 12:09 am (спустя 21 минуту; написано за 21 секунду)
   Post subject:
Reply with quote


!

Гость, forum.dklab.ru/about/todo/PravilaEtogoForuma-ProchitayteObyazatelno.html — на форуме принято обращение «на Вы».
Back to top
View user's profile Send private message
ARACOOL22
Guest





Карма: 387
   поощрить/наказать


PostPosted: Wed May 09, 2012 10:18 am (спустя 1 год 3 месяца 28 дней 10 часов 9 минут; написано за 1 минуту 4 секунды)
   Post subject:
Reply with quote

У меня тоже самое! Я все подключил как в примере! Но ничего не отправляется
Code (php): скопировать код в буфер обмена
require_once(CORE_DIR . '/Errors/lib/config.php');

include_once('Debug/ErrorHook/Listener.php');
include_once('Debug/ErrorHook/RemoveDupsWrapper.php');
include_once('Debug/ErrorHook/MailNotifier.php');

$errorsToMail = new Debug_ErrorHook_Listener();
  $errorsToMail->addNotifier(
      new Debug_ErrorHook_RemoveDupsWrapper(
          new Debug_ErrorHook_MailNotifier(
              "someemail@gmail.com",
              Debug_ErrorHook_TextNotifier::LOG_ALL
          ),
          "/tmp/errors", // lock directory
          300            // do not resend the same error within 300 seconds
      )
  );
Back to top
Антон_
Guest





Карма: 387
   поощрить/наказать


PostPosted: Wed Jun 20, 2012 5:49 pm (спустя 1 месяц 11 дней 7 часов 31 минуту; написано за 3 минуты 15 секунд)
   Post subject: Не могу понять что не так
Reply with quote

Подключаю библиотеку (как в примере), делаю любую ошибку в коде (вывод ошибок пока не отключил) и получаю помимо нее всегда 2 раза
Code (php): скопировать код в буфер обмена
Warning: file_put_contents(../logs/errors/b5e56ddd6f96843bf66d78a51842fbd0.error) [function.file-put-contents]: failed to open stream: No such file (www.php.net/file) or directory in D:\web\home\lovecraft\libs\Debug\ErrorHook\RemoveDupsWrapper.php on line 72
для двух разных файлов .error. Причем папка есть, запись разрешена и один файл там таки создается (и обновляется). Я так понимаю, это что-то связанное с механизмом запоминания повторяющихся ошибок. Не могу понять откуда берутся эти варнинги и как исправить ситуацию...
Back to top
Антон_
Guest





Карма: 387
   поощрить/наказать


PostPosted: Wed Jun 20, 2012 6:12 pm (спустя 22 минуты; написано за 1 минуту 4 секунды)
   Post subject:
Reply with quote

Причем на мыло приходит инфа сначала об этом варнинге, потом о самой сделанной мной ошибке, и, соответственно, еще раз об этом варнинге...
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Fri Jun 22, 2012 12:34 am (спустя 1 день 6 часов 21 минуту; написано за 1 минуту 27 секунд)
   Post subject:
Reply with quote

ARACOOL22
Отправка происходит через стандартную функцию PHP mail(). Проверьте, может, она у вас не работает (неправильно настроено что-то и т.д.)

Антон_
Видите, он пытается писать в ../logs/errors - наверняка вы такой путь передаете при создании объекта Debug_ErrorHook_RemoveDupsWrapper (2-й параметр конструктора, имя - $tmpPath). Либо текущая директория на момент вызова сменилась. Передавайте туда абсолютный путь всегда.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

Но если не поверите и все же попытаетесь - как только увидите, что все безрезультатно, удалите свой пост, пожалуйста. Модераторы тоже люди, нехорошо, если они погрязнут в тоннах спама.
     

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML