Twig, Class cache does not exist [Решено]

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Twig, Class cache does not exist [Решено]

Сообщение nepster »

Сделал базовое приложение, все работает.

Заливаю на сервер и получаю вот такую ошибку:
An exception has been thrown during the rendering of a template ("Class cache does not exist") in "index.twig" at line 8.
Момент в том, что у меня 2 приложения (девеломпент и продакшин), разница в конфигурации базы и кеша. Все изменения я сливаю на девелопмент проверяю что действительно все работает и обновляю продакшин.

В девелопмент приложении я выключил кеш:

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

    'components' => [ 
        /*'cache' => [
            'class' => 'yii\caching\FileCache',
            'cachePath' => '@root/common/cache',
            'keyPrefix' => 'ch7-'
        ],*/
И в twig:

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

        'view' => [
            'theme' => [
                'pathMap' => [
                    '@app/views' => '@app/themes/basic',
                    '@app/modules' => '@app/themes/basic/modules',
                ],
                'baseUrl' => '@web/themes/basic',
            ],
            'renderers' => [
                'layout' => '@app/themes/basic/layouts/main.twig',
                'twig' => [
                    'class' => 'yii\twig\ViewRenderer',
                    'cachePath' => '@runtime/Twig/cache',
                    'options' => [
                        'cache' => false
                    ],
                    'globals' => [
                        'html' => '\yii\helpers\Html',
                        'pos_begin' => \yii\web\View::POS_BEGIN,
                    ],
                    'functions' => [
                        't' => '\Yii::t',
                        'json_encode' => '\yii\helpers\Json::encode',
                        'dump' => '\yii\helpers\BaseVarDumper::dump',
                    ],
                ],
            ],
        ],
на моем локальном хосте все работает. На сервере нет. Но есть добавить компонент cache то и на сервере будет работать, вот только на дев приложении он мне не нужен, да и вопрос почему на локалке все работает ? База везде одинаковая, код тоже.

По поводу настроек:
error_reporting E_ALL
display_error On

что на сервере, что на локалке.

Подскажите что делать, куда копать ?
Последний раз редактировалось nepster 2014.12.19, 23:27, всего редактировалось 1 раз.
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Twig, Class cache does not exist

Сообщение anton44eg »

нужно не выключать компонент кеша, а выбирать DummyCache
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Twig, Class cache does not exist

Сообщение nepster »

Как раз перевожу доку по кешу, и читаю про DummyCache. Спасибо.

А не подскажете в чем на первый взгляд различие локалки и сервера ?
Настройки я перекапал и походу все одинаково. Не понимаю почему она так по разному работает.
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Twig, Class cache does not exist

Сообщение nepster »

[[yii\caching\DummyCache]]: служит кэш-заполнителем, который не делает никакого реального кэширования. Цель этого компонента заключается в упрощении кода, который должен проверить наличие кэш-памяти. Например, при разработке или если сервер не имеет реальную поддержку кэша, вы можете настроить компонент кэша использовать этот тип кэша. Когда фактическая поддержка кэша включена, вы можете переключиться на использование соответствующего компонента кэша. В обоих случаях, вы можете использовать тот же самый код Yii::$app->cache->get($key) попытаться извлечь данных из кэша, не беспокоясь, что Yii::$app->cache может быть null.
Как я понял у меня на локалке есть какой-то дефолтный кеш, а на сервере его нет. Ради интереса покопаю, на будущее пригодиться. Спасибо за наводку.
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Twig, Class cache does not exist

Сообщение nepster »

Вот и виновник торжества:

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

        'i18n' => [
            'translations' => [
                '*' => [
                        'class' => 'yii\i18n\DbMessageSource',
                        'enableCaching' => false,
                        'messageTable' => '{{%language_messages}}',
                        'sourceMessageTable' => '{{%language_source_messages}}',
                    ],
                ],
        ], 
enableCaching параметр был true, и твиг пытался его кешировать. Самое интересное, что на локальном сервере все окей, ошибок не возникает.
Буду использовать DummyCache, еще раз спасибо.
Ответить