<?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
Когда в проекте диапазон чисел от 0,0001 до 1 000 000, удобно автоматически удалять лишнии нули после запятой.
В статье приводится пример кода для получения ID текущего покупателя в bitrix.
В статье приводится пример регистрации собственного события в bitrix и добавления на него обработчика.
В статье приводится пример кода для получения директории в которой находится файл компонента.
В статье приводится пример кода подключения bitrix без подключения шаблона сайта. Так же описано когда это может пригодится.
grep - удобная и быстрая команда, здесь приведены примеры как произвести рекурсивный поиск в каталоге, поиск среди запущенных процессов и другие.