Перехват Fatal Error

<?php

ini_set('display_errors', false);  
ini_set('log_errors', false); 
ini_set('error_reporting', E_ALL); 

function myShutdown()
{
    if (($e = error_get_last()) !== null && $e['type'] <> E_NOTICE) {

        $arError = array(E_ERROR => 'E_ERROR', E_CORE_ERROR => 'E_CORE_ERROR', E_COMPILE_ERROR => 'E_COMPILE_ERROR', E_USER_ERROR => 'E_USER_ERROR', E_PARSE => 'E_PARSE', E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR', E_WARNING => 'E_WARNING', E_CORE_WARNING => 'E_CORE_WARNING', E_COMPILE_WARNING => 'E_COMPILE_WARNING',
            E_USER_WARNING => 'E_USER_WARNING', E_NOTICE => 'E_NOTICE', E_USER_NOTICE => 'E_USER_NOTICE', E_STRICT => 'E_STRICT');

        $resultText = $arError[$e['type']] . ' : ' . $e['message'] . $e['file'] . ' ' . $e['line'];

        mail('admin@precord.ru', 'PHP Erorr!', $resultText);
    }
}

register_shutdown_function('myShutdown');

// Пример:
$o = new Test1;

В приведенном примере происходит попытка создания экземпляра неопределенного класса — Test1. После выполнения этого скрипта на почту придет письмо примерно со следующим содержимым: E_ERROR : Class 'Tester1' not found script.php 24

Текст и заголовок письма конечно же можно изменить или записывать данные в специальный файл. Плюс отправки сообщения на почту, в том, что на него можно оперативно среагировать.

Массив $e содержит следующие элементы:

  • type – тип ошибки, в примере это E_ERROR, остальные типы приведены в массиве $arError;
  • message – текст ошибки;
  • file – файл в котором произошла ошибка;
  • line – строка на которой произошла ошибка;

Рубрики: PHP

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

CSS простой горизонтальный слайдер

В статье приводится пример кода для создания простого горизонтального слайдера с использованием CSS и небольшим количеством JS кода. Для реализации потребуется всего около 60 строк стилей и js кода.

Bitrix получить путь до компонента

В статье приводится пример кода для получения директории в которой находится файл компонента.

Bitrix подключить модуль

Так как bitrix состоит из большого количества различных модулей, знать как их правильно подключать просто необходимо.

Подключить bitrix без подключения шаблона сайта

В статье приводится пример кода подключения bitrix без подключения шаблона сайта. Так же описано когда это может пригодится.

Bitrix регистрация своего события

В статье приводится пример регистрации собственного события в bitrix и добавления на него обработчика.

Bitrix подключить класс компонента

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

Комментарии

Комментариев пока нет
Данный сайт использует файлы cookies. Продолжая просмотр сайта, вы соглашаетесь с использованием файлов cookies.
ОК