Перехват 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

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

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

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

Bitrix запись своих настроек в settings.php

Статья о том как разместить свои настройки не создавая велосипеды и костыли, а используя возможности системы.

Bitrix получить значения списочного поля

В статье приводится пример кода для получения всех вариантов значений пользовательского поля с типом "Список". Так же описано как можно получить конкретный вариант значения поля.

Bitrix сбросить буфер вывода

Функция RestartBuffer() в Bitrix используется для сброса буфера вывода. Она позволяет прервать вывод страницы на определенном этапе выполнения скрипта и начать вывод заново. В статье рассмотрим основные сценарии использования данной функции, рассмотрим пример кода.

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

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

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

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

Комментарии

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