Yii 1.1.16 - не работает stack trace (баг)

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
alhimik
Сообщения: 11
Зарегистрирован: 2014.03.10, 12:55

Yii 1.1.16 - не работает stack trace (баг)

Сообщение alhimik »

Yii 1.1.16 больше не выбрасывает stack trace в случае такой элементарной ошибки:

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

public function actionIndex() {
    $a .= $a;
    $this->render('index');
}
 
Вместо этого он выводит:
Error 500
Undefined variable: a

И все. Что к чему? И где теперь ошибку искать? Такой баг возникает только в 1.1.16, в остальных все нормально.
Почините, пожалуйста!
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii 1.1.16 - не работает stack trace (баг)

Сообщение samdark »

Для остальных ошибок стектрейс выкидывает? YII_DEBUG = true?
alhimik
Сообщения: 11
Зарегистрирован: 2014.03.10, 12:55

Re: Yii 1.1.16 - не работает stack trace (баг)

Сообщение alhimik »

YII_DEBUG = true.
Когда вызывается CExeption, то stack trace выкидывает, например:

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

public function actionIndex() {
    $this->render('index215215645'); // рендерю несуществующую вьюшку
}
 
А в случае PHP notice ошибки - нет.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii 1.1.16 - не работает stack trace (баг)

Сообщение samdark »

Гм, так это в 1.1.14 ещё поменяли вроде: https://github.com/yiisoft/yii/pull/2903
alhimik
Сообщения: 11
Зарегистрирован: 2014.03.10, 12:55

Re: Yii 1.1.16 - не работает stack trace (баг)

Сообщение alhimik »

Как видишь, в версии 1.1.16 этот баг вернули на место:
framework/base/CErrorHandler.php

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

    /**
     * Renders the current error information.
     * This method will display information from current {@link error} value.
     */
    protected function renderError()
    {
        if($this->errorAction!==null)
            Yii::app()->runController($this->errorAction);
        else
        {
            $data=$this->getError();
            if($this->isAjaxRequest())
                Yii::app()->displayError($data['code'],$data['message'],$data['file'],$data['line']);
            elseif(YII_DEBUG)
                $this->render('exception',$data);
            else
                $this->render('error',$data);
        }
    }
Здесь errorAction более приоритетный, чем YII_DEBUG.

И теперь в файле config/main.php снова приходится использовать костыль:

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

errorHandler => array(
    'errorAction' => YII_DEBUG ? null : array('site/error')
)
 
Vasiliy Baukin
Сообщения: 102
Зарегистрирован: 2011.02.04, 12:47

Re: Yii 1.1.16 - не работает stack trace (баг)

Сообщение Vasiliy Baukin »

Прошу добавить информацию о костыле в документацию. Совершенно неочевидно, почему срабатывает контроллерный обработчик при YII_DEBUG = TRUE.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Yii 1.1.16 - не работает stack trace (баг)

Сообщение samdark »

Сделаете pull request?
Ответить