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

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

PHP календарь на месяц

Функция для вывода календаря на заданный месяц и пример её использования.

Основные команды Linux

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

Bitrix Получить ID инфоблока для элемента по его ID

В статье приводится пример того как можно получить ID инфоблока зная ID его элемента.

Использование chatGpt в работе: генерация html

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

Что нового в PHP 8.3?

Обзор новых возможностей PHP 8.3.

Комментарии

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