error_get_last() возвращает null

320
10 декабря 2016, 10:51

например, делаю так:

$var = ss; //неопределённая константа, например
file_put_contents('1.log', var_export(error_get_last(), true));

В итоге получаю null

Пример реального кода:

function error_handler($errno, $errstr, $errfile, $errline)
{
  //...
}
function fatal_error_handler()
{
    chdir($_SERVER['DOCUMENT_ROOT'] . '/dsm2.7f2_local/dsm2');
    $error = error_get_last();
    if ($error && $error['type'] == E_ERROR) {
        sendErrorMessage('troopermanowar@gmail.com', 'Error', 'Fatal error!');
        error_handler($error['type'], $error['message'], $error['file'], $error['line']);
    }
}
function sendErrorMessage($email, $subject, $msg)
{
   //...
}
error_reporting(-1);
ini_set('display_errors', 'off');
set_error_handler("error_handler");
register_shutdown_function('fatal_error_handler');
Answer 1

Есть в общем перехват любых ошибок кроме фаталов с помощью set_error_handler . Фатал можно перехватить с помощью register_shutdown_function . Есть ещё set_exception_handler - для особого типа ошибок "неперехваченные исключения". Перехватчики надо определить в начале программы - например с конструированием объекта вроде Logger.

Ну и вручную исключение перехватывается с помощью try{..}catch(Exception $e){/*перехват тут*/} - если не перехватывать, то перехватит set_error_handler или set_exception_handler , но надо помнить - что фаталы, нотайсы, стрикты (типы ошибок) - к исключениям не относятся, иногда и варнинги не относятся.

Вот и вся обработка ошибок в PHP - если наладить запись в лог всех ошибок и нотайсов: помогает хорошо, позволяет продуцировать правильно работающий код.

READ ALSO
Время до указанного часа

Время до указанного часа

Нужно посчитать время до ближайшего нужного часа, период - каждые 6 часов, это 00, 6, 12, 18Выдать время до этого часа в секундах

320
Ошибка “Fatal error: Class '…' not found” в phpUnit

Ошибка “Fatal error: Class '…' not found” в phpUnit

тестируемый класс, лежит в app\web:

452
Добавление записи в БД через форму [закрыто]

Добавление записи в БД через форму [закрыто]

Вношу данные в БД через форму в отдельном файле и методом POST отправляю ихНо почему-то данные в бд не появляются,что неправильно делаю? Помогите...

357