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

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

Добавлено: 2013.09.24, 12:34
DragonBlack
Всем доброе время суток.

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

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

Добавлено: 2013.09.24, 13:11
samdark
Если откатить директорию фреймворка до 1.1.14 точно восстанавливается всё?

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

Добавлено: 2013.09.24, 13:11
samdark
1.1.15 — это master из git?

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

Добавлено: 2013.09.24, 13:34
lancedevnull
YII_DEBUG определен где то выше, там где вы думаете его устанавливаете - проверьть возможно он уже установлен в тру

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

Добавлено: 2013.09.24, 13:35
DragonBlack
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?
Да.

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

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

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

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

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

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

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

Добавлено: 2013.09.24, 13:54
DragonBlack
Да, спасибо, я уже нашел. Только получается, что если определено действие для отображения ошибок, то настройка 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-блок, а на продакшене - то, что прописано в еррор экшене.

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

Добавлено: 2013.09.24, 15:02
samdark
Похоже, что так... сможете сделать pull request?

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

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

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

Добавлено: 2013.09.24, 16:00
samdark

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

Добавлено: 2013.09.24, 16:07
DragonBlack
Добавил pull request

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

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

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

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

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

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

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

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