Не работает перехват ошибок PHP (Notice)

Уже исправленные репорты или принятые предложения
Закрыто
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Не работает перехват ошибок PHP (Notice)

Сообщение denis909 »

Проблема:

Если в контроллере написать код вызывающий ошибку PHP, а именно такой:

Код: Выделить всё

$notExists->anyMethod(); 
То результатом выполнения будет не вывод исключения (Exception), а пустая страница.
Изучив данную проблему в дебагере, я пришел к выводу, что проблема в файле: \yii\base\ErrorHandler

Код: Выделить всё

    public function handleError($code, $message, $file, $line)
    {
        if (error_reporting() & $code) {

            // тут некоторый код

            throw $exception;  // в этом месте выполнение скрипта останавливается   
Возможно, это как-то связано с используемой мной версией PHP (5.4.4), а может и нет.
Как вариант, чтобы получить корректный вывод этой ошибки в Yii2, нужно заменить:

Код: Выделить всё

throw $exception; 
на

Код: Выделить всё

$this->handleException($exception);
Данный код вызывает исключение: PHP Notice – Undefined variable: notExists. Если аналогичное исключение вызвать другим кодом, например:

Код: Выделить всё

$i = $notExists; 
то фреймворк корректно отображает страницу с ошибкой и без модификаций.
Не понимаю почему так происходит.

http://denis909.spb.ru/blog/view/52
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не работает перехват ошибок PHP (Notice)

Сообщение samdark »

Изображение
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Re: Не работает перехват ошибок PHP (Notice)

Сообщение denis909 »

Проблема была в версии PHP. Поставил 5.4.27 и всё ок.
Закрыто