Страница 1 из 1

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

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

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

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

И все. Что к чему? И где теперь ошибку искать? Такой баг возникает только в 1.1.16, в остальных все нормально.
Почините, пожалуйста!

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

Добавлено: 2015.01.16, 09:26
samdark
Для остальных ошибок стектрейс выкидывает? YII_DEBUG = true?

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

Добавлено: 2015.01.17, 08:55
alhimik
YII_DEBUG = true.
Когда вызывается CExeption, то stack trace выкидывает, например:

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

public function actionIndex() {
    $this->render('index215215645'); // рендерю несуществующую вьюшку
}
 
А в случае PHP notice ошибки - нет.

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

Добавлено: 2015.01.19, 11:10
samdark
Гм, так это в 1.1.14 ещё поменяли вроде: https://github.com/yiisoft/yii/pull/2903

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

Добавлено: 2015.01.19, 18:19
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')
)
 

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

Добавлено: 2015.03.20, 12:55
Vasiliy Baukin
Прошу добавить информацию о костыле в документацию. Совершенно неочевидно, почему срабатывает контроллерный обработчик при YII_DEBUG = TRUE.

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

Добавлено: 2015.03.23, 14:14
samdark
Сделаете pull request?