Написать письмо   
 
logo
 
Snippy
Сборник
примеров кода

CodeIgniter предоставляет неплохие возможности по обработке ошибок, но мне они показались недостаточными по следующим причинам:

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

Будем это исправлять =)

Обработка исключений (см. ниже вариант без правки файлов ядра)

Указываем обработчик исключений в файле /system/codeigniter/CodeIgniter.php рядом со строчкой теперь при возникновении исключения будет вызываться метод _exception_handler2 из файла /system/codeigniter/Common.php.

А вот собственно и сам метод:

Уведомление по почте и дополнительная информация по ошибкам

Для того чтобы админстратор получал уведомление о ошибках на сайте на почтовый ящик, необходимо в файле /system/application/config/config.php указать почтовый адрес администратора: Если вы не хотите чтобы сообщения отсылались - не указывайте этот параметр или оставьте его пустым.

Расширяем базовый класс Exceptions - в директории /system/application/libraries/ создаем файл MY_Exceptions.php со следующим содержимым:
Не забывайте. что для включения механизма ведения логов необходимо в файле /system/application/config/config.php указать у параметра log_threshold значением '1'.

Вы можете скачать исходники (Файлы CodeIgniter.php и Common.php от CodeIgniter 1.7.2)

Код довольно простой - думаю что все ясно по исходникам.
Если все таки вопросы возникнут - с удовольствием отвечу в комментариях.

UPDATE: Добавление обработчика исключений с помощью хуков

Здесь мне посоветовали использовать хуки вместо того чтобы править файлы ядра для вызова кода установки обработчика исключений и самого обработчика - я так и поступил.

Для начала надо включить механизм куков, для этого в файле /system/application/config/config.php параметр enable_hooks устанавливаем в TRUE:
Затем устанавливаем сам хук в файле /system/application/config/hooks.php пишем:
Данный код означает что при старте системы будет вызыван метод addExceptionHandler из файла /system/application/hooks/exception_hook.php. Вот содержимое этого файла:
В итоге файлы ядра фреймворка остаются нетронутыми.
Скачать новые исходники можно здесь.




Ваше имя
Ваш E-mail
(если хотите отслеживать комментарии)
Дoкажи, что ты не робот
Текст комментария