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

Проблема:

Если в контроллере Yii фреймворка второй версии, написать следующий код:

$notExists->anyMethod();

То результатом выполнения будет не вывод исключения (Exception), а пустая страница.

Изучив данную проблему в дебагере, я пришел к выводу, что проблема в коде фреймворка, а именно в файле: \yii\base\ErrorHandler

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

            // -- тут был некоторый код

            throw $exception;  // в этом месте выполнение скрипта останавливается

Чтобы получить корректный вывод данной ошибки в Yii2, нужно заменить:

throw $exception;

на

$this->handleException($exception);

Данный код вызывает исключение: PHP Notice – Undefined variable: notExists. Если аналогичное исключение вызвать другим кодом, например:

$i = $notExists;

то фреймворк корректно отображает страницу с ошибкой и без модификаций.

Как оказалось, проблема была в версии PHP, и после установки свежей версии (5.4.27) всё заработало. Обновите PHP, если столкнулись с этой, или аналогичной проблемой.

comments powered by HyperComments