Вывод ошибок в Yii 1.1.15

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
DragonBlack
Сообщения: 6
Зарегистрирован: 2013.09.24, 10:59

Вывод ошибок в Yii 1.1.15

Сообщение DragonBlack » 2013.09.24, 12:34

Всем доброе время суток.

После обновления до 1.1.15 перестал работать девелоперский режим вывода ошибок. Т.е. независимо от установленной константы YII_DEBUG все ошибки выводятся через echo (как будь-то приложение работает в режиме "production").
Подскажите, куда копать, чтобы вернуть такой же вывод ошибок, как и в 1.1.14?
Заранее благодарен.

Аватара пользователя
samdark
Администратор
Сообщения: 8773
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вывод ошибок в Yii 1.1.15

Сообщение samdark » 2013.09.24, 13:11

Если откатить директорию фреймворка до 1.1.14 точно восстанавливается всё?

Аватара пользователя
samdark
Администратор
Сообщения: 8773
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вывод ошибок в Yii 1.1.15

Сообщение samdark » 2013.09.24, 13:11

1.1.15 — это master из git?

lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Вывод ошибок в Yii 1.1.15

Сообщение lancedevnull » 2013.09.24, 13:34

YII_DEBUG определен где то выше, там где вы думаете его устанавливаете - проверьть возможно он уже установлен в тру

DragonBlack
Сообщения: 6
Зарегистрирован: 2013.09.24, 10:59

Re: Вывод ошибок в Yii 1.1.15

Сообщение DragonBlack » 2013.09.24, 13:35

Sam Dark писал(а):Если откатить директорию фреймворка до 1.1.14 точно восстанавливается всё?
Да. В index.php проекта прописываю директорию фреймворка с версией 1.1.14 - все работает красиво. Меняю на путь к 1.1.15 - просто вывод текста ошибки.
Единственное различие, которое нашел, это в файле CErrorHandler.php
v.1.1.15

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

protected function handleError($event)
{
//skipped
    $app=Yii::app();
    if($app instanceof CWebApplication)
    {
//skipped
        if(!headers_sent())
            header("HTTP/1.0 500 Internal Server Error");
        $this->renderError();
    }
    else
        $app->displayError($event->code,$event->message,$event->file,$event->line);
}
v.1.1.14

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

protected function handleError($event)
{
//skipped
    $app=Yii::app();
    if($app instanceof CWebApplication)
    {
//skipped
        if(!headers_sent())
            header("HTTP/1.0 500 Internal Server Error");
        if($this->isAjaxRequest())
            $app->displayError($event->code,$event->message,$event->file,$event->line);
        elseif(YII_DEBUG)
            $this->render('exception',$data);
        else
            $this->render('error',$data);
    }
    else
        $app->displayError($event->code,$event->message,$event->file,$event->line);
}
Sam Dark писал(а):1.1.15 — это master из git?
Да.
Последний раз редактировалось DragonBlack 2013.09.24, 13:38, всего редактировалось 1 раз.

DragonBlack
Сообщения: 6
Зарегистрирован: 2013.09.24, 10:59

Re: Вывод ошибок в Yii 1.1.15

Сообщение DragonBlack » 2013.09.24, 13:37

lancedevnull писал(а):YII_DEBUG определен где то выше, там где вы думаете его устанавливаете - проверьть возможно он уже установлен в тру
В том-то и дело, что в настройках и файлах проекта ничего не трогаю (только путь к папке фреймворка меняю) и в результате по-разному работает вывод ошибок

lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Вывод ошибок в Yii 1.1.15

Сообщение lancedevnull » 2013.09.24, 13:49

в коде прописано про дебаг, только теперь в методе renderError
https://github.com/yiisoft/yii/blob/mas ... r.php#L345

lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Вывод ошибок в Yii 1.1.15

Сообщение lancedevnull » 2013.09.24, 13:51

не понятно про еррор экшн, если его указать, то получается не будет выхлопа об ошибке? или в еррор экшене вывод свой? иначе рекурсией попахивает

DragonBlack
Сообщения: 6
Зарегистрирован: 2013.09.24, 10:59

Re: Вывод ошибок в Yii 1.1.15

Сообщение DragonBlack » 2013.09.24, 13:54

Да, спасибо, я уже нашел. Только получается, что если определено действие для отображения ошибок, то настройка YII_DEBUG до лампочки :)
IMHO YII_DEBUG должна иметь наивысший приоритет, ведь еррор экшн предназначен больше для обработки ошибок на продакшене.

Может имеет смысл дополнить метод проверкой на установленный YII_DEBUG?

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

protected function renderError()
    {
        if($this->errorAction!==null && !YII_DEBUG)
            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);
        }
    }
 
Тогда при включенном дебагере будет всегда выполняться else-блок, а на продакшене - то, что прописано в еррор экшене.

Аватара пользователя
samdark
Администратор
Сообщения: 8773
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вывод ошибок в Yii 1.1.15

Сообщение samdark » 2013.09.24, 15:02

Похоже, что так... сможете сделать pull request?

DragonBlack
Сообщения: 6
Зарегистрирован: 2013.09.24, 10:59

Re: Вывод ошибок в Yii 1.1.15

Сообщение DragonBlack » 2013.09.24, 15:41

Если скажете, где об этом прочитать, то смогу. Просто никогда не pull'ил на github :)


DragonBlack
Сообщения: 6
Зарегистрирован: 2013.09.24, 10:59

Re: Вывод ошибок в Yii 1.1.15

Сообщение DragonBlack » 2013.09.24, 16:07

Добавил pull request

Аватара пользователя
samdark
Администратор
Сообщения: 8773
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вывод ошибок в Yii 1.1.15

Сообщение samdark » 2013.09.24, 16:22

Спасибо. Назначил на 1.1.15. Перед вливанием в основную ветку погоняю ещё...

skit
Сообщения: 130
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: Вывод ошибок в Yii 1.1.15

Сообщение skit » 2015.08.28, 05:46

1.1.16
Ошибки php вываливаются через echo.
СException работают как надо, синтаксические ошибки тоже видно, все остальное простым echo.
Сейчас схватил ошибку инклуда

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

Главная » Error
Error 500
include(Comment.php): failed to open stream: No such file or directory
Понять где инклуд пока не смог. Как вывести ошибку обычным способом тоже не разобрался. Дебаг стоит в тру. Индекс.пхп не правил.
Все ошибки php выводит на сайте, хоть бы файл показывал.

skit
Сообщения: 130
Зарегистрирован: 2012.10.08, 12:50
Откуда: Сибирь
Контактная информация:

Re: Вывод ошибок в Yii 1.1.15

Сообщение skit » 2015.08.28, 06:03

Раскомментировал в конфиге 'CWebLogRoute' понял, что просто тема не изучена. Журнал подробный, получил достаточно сведений об ошибке.

Ответить