Оформить вывод ошибок
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()
.
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>'; } });
Функцию set_error_handler()
желательно вызывать в начале файла. Если будет ошибка до вызова set_error_handler()
, то кастомная обработка ошибок не сработает.
Поддержать автора
Все статьи создаются и поддерживаются одним человеком,
если вам нравится контент, вы можете поддержать автора сайта