Оформить вывод ошибок
1-ый способ: set_error_handler()
Оформить вывод ошибок можно через функцию set_error_handler().
function errorHandler($errno, $errstr, $errfile, $errline) {
// Код ошибки не включён в error_reporting
if (!(error_reporting() & $errno)) {
return false;
}
// может потребоваться экранирование
$errstr = htmlspecialchars($errstr);
switch ($errno) {
case E_USER_ERROR:
echo "<b>Пользовательская ОШИБКА</b> [$errno] $errstr<br />\n";
echo " Фатальная ошибка в строке $errline файла $errfile";
exit(1);
case E_USER_WARNING:
echo "<b>Пользовательское ПРЕДУПРЕЖДЕНИЕ</b> [$errno] $errstr<br />\n";
break;
case E_USER_NOTICE:
echo "<b>Пользовательское УВЕДОМЛЕНИЕ</b> [$errno] $errstr<br />\n";
break;
default:
echo "Неизвестная ошибка: [$errno] $errstr<br />\n";
break;
}
return true;
}
// Задать пользовательский вывод ошибок
set_error_handler('errorHandler');
Если вывести несуществующую переменную, то код выведет примерно следующую строку:
Неизвестная ошибка: [2] Undefined variable $notExists
Чтобы вернуть обработчик ошибок по умолчанию, надо вызвать функцию restore_error_handler().
Функцию set_error_handler() желательно вызывать в начале файла. Если будет ошибка до вызова set_error_handler(), то кастомная обработка ошибок не сработает.
2-ой способ: register_shutdown_function()
Функция set_error_handler() не поддерживает несколько типов ошибок, например Fatal error или исключения. Чтобы выводить дополнительную информацию об ошибке, можно использовать функцию register_shutdown_function().
register_shutdown_function(function () {
$err = error_get_last();
if (!is_null($err)) {
print 'Ошибка#'.$err['message'].'<br>';
print 'Строка#'.$err['line'].'<br>';
print 'Файл#'.$err['file'].'<br>';
}
});
Поддержать автора
Все статьи создаются и поддерживаются одним человеком,
если вам нравится контент, вы можете поддержать автора сайта
