Skip to content

[5.x]: Not instantiable – yii\di\NotInstantiableException - Can not instantiate yii\redis\ConnectionInterface. #18227

@jamesmacwhite

Description

@jamesmacwhite

What happened?

Description

When updating composer, this pulled in yiisoft/yii2-redis 2.1.0 from 2.0.20, which caused Craft CMS to then throw the following stacktrace on any front end or CP request:

yii\di\NotInstantiableException: Can not instantiate yii\redis\ConnectionInterface. in /var/www/html/vendor/yiisoft/yii2/di/Container.php:408
Stack trace:
#0 /var/www/html/vendor/yiisoft/yii2/di/Container.php(170): yii\di\Container->build()
#1 /var/www/html/vendor/yiisoft/yii2/di/Instance.php(126): yii\di\Container->get()
#2 /var/www/html/vendor/yiisoft/yii2-redis/src/Session.php(83): yii\di\Instance::ensure()
#3 /var/www/html/vendor/yiisoft/yii2/base/BaseObject.php(109): yii\redis\Session->init()
#4 [internal function]: yii\base\BaseObject->__construct()
#5 /var/www/html/vendor/yiisoft/yii2/di/Container.php(419): ReflectionClass->newInstanceArgs()
#6 /var/www/html/vendor/yiisoft/yii2/di/Container.php(170): yii\di\Container->build()
#7 /var/www/html/vendor/yiisoft/yii2/BaseYii.php(365): yii\di\Container->get()
#8 /var/www/html/vendor/craftcms/cms/src/Craft.php(70): yii\BaseYii::createObject()
#9 /var/www/html/config/app.web.php(39): Craft::createObject()
#10 [internal function]: craft\services\Config::{closure}()
#11 /var/www/html/vendor/yiisoft/yii2/di/Container.php(633): call_user_func_array()
#12 /var/www/html/vendor/yiisoft/yii2/BaseYii.php(349): yii\di\Container->invoke()
#13 /var/www/html/vendor/yiisoft/yii2/di/ServiceLocator.php(137): yii\BaseYii::createObject()
#14 /var/www/html/vendor/yiisoft/yii2/base/Module.php(766): yii\di\ServiceLocator->get()
#15 /var/www/html/vendor/craftcms/cms/src/web/Application.php(379): yii\base\Module->get()
#16 /var/www/html/vendor/yiisoft/yii2/web/Application.php(178): craft\web\Application->get()
#17 /var/www/html/vendor/craftcms/cms/src/helpers/Session.php(112): yii\web\Application->getSession()
#18 /var/www/html/vendor/craftcms/cms/src/helpers/Session.php(133): craft\helpers\Session::session()
#19 /var/www/html/vendor/craftcms/cms/src/helpers/Session.php(92): craft\helpers\Session::exists()
#20 /var/www/html/vendor/craftcms/cms/src/web/User.php(545): craft\helpers\Session::has()
#21 /var/www/html/vendor/yiisoft/yii2/web/User.php(199): craft\web\User->renewAuthStatus()
#22 /var/www/html/vendor/craftcms/cms/src/web/twig/Extension.php(1730): yii\web\User->getIdentity()
#23 /var/www/html/vendor/twig/twig/src/ExtensionSet.php(330): craft\web\twig\Extension->getGlobals()
#24 /var/www/html/vendor/twig/twig/src/Environment.php(844): Twig\ExtensionSet->getGlobals()
#25 /var/www/html/vendor/nystudio107/craft-autocomplete/src/generators/AutocompleteVariableGenerator.php(80): Twig\Environment->getGlobals()
#26 /var/www/html/vendor/nystudio107/craft-autocomplete/src/generators/AutocompleteVariableGenerator.php(57): nystudio107\autocomplete\generators\AutocompleteVariableGenerator::generateInternal()
#27 /var/www/html/vendor/nystudio107/craft-autocomplete/src/Autocomplete.php(144): nystudio107\autocomplete\generators\AutocompleteVariableGenerator::generate()
#28 [internal function]: nystudio107\autocomplete\Autocomplete->generateAutocompleteClasses()
#29 /var/www/html/vendor/yiisoft/yii2/base/Event.php(312): call_user_func()
#30 /var/www/html/vendor/yiisoft/yii2/base/Component.php(654): yii\base\Event::trigger()
#31 /var/www/html/vendor/craftcms/cms/src/base/ApplicationTrait.php(550): yii\base\Component->trigger()
#32 /var/www/html/vendor/craftcms/cms/src/base/ApplicationTrait.php(1635): craft\web\Application->trigger()
#33 /var/www/html/vendor/craftcms/cms/src/web/Application.php(108): craft\web\Application->_postInit()
#34 /var/www/html/vendor/yiisoft/yii2/base/BaseObject.php(109): craft\web\Application->init()
#35 /var/www/html/vendor/yiisoft/yii2/base/Application.php(204): yii\base\BaseObject->__construct()
#36 [internal function]: yii\base\Application->__construct()
#37 /var/www/html/vendor/yiisoft/yii2/di/Container.php(419): ReflectionClass->newInstanceArgs()
#38 /var/www/html/vendor/yiisoft/yii2/di/Container.php(170): yii\di\Container->build()
#39 /var/www/html/vendor/yiisoft/yii2/BaseYii.php(365): yii\di\Container->get()
#40 /var/www/html/vendor/craftcms/cms/src/Craft.php(70): yii\BaseYii::createObject()
#41 /var/www/html/vendor/craftcms/cms/bootstrap/bootstrap.php(306): Craft::createObject()
#42 /var/www/html/vendor/craftcms/cms/bootstrap/web.php(35): require('...')
#43 /var/www/html/web/index.php(11): require('...')
#44 {main}

I have the following redis configuration defined in app.web.php

'components' => [
        'session' => static function() {
            $config = App::sessionConfig();

            $config['class'] = Session::class;

            $config['redis'] = [
                'hostname' => App::env('REDIS_HOST') ?: 'redis',
                'port' => App::env('REDIS_PORT') ?: 6379,
                'password' => App::env('REDIS_PASSWORD') ?: null,
                'useSSL' => App::parseBooleanEnv('$REDIS_USE_SSL') ?? false,
                'contextOptions' => [
                    'ssl' => [
                        'cafile' => CRAFT_BASE_PATH . '/redis/ca.pem',
                    ],
                ]
            ];

            return Craft::createObject($config);
        }
    ],

Locally I am not using any of SSL properties, but it appears to be the use of modifying the app config between 2.0.20 and 2.1.0

Steps to reproduce

Install Craft CMS with yiisoft/yii2-redis 2.1.0 as a dependency and configure Redis in app.web.php

Removing any Redis config defined in app.web.php works fine.

Expected behavior

No Redis error.

Actual behavior

Not instantiable – yii\di\NotInstantiableException

Craft CMS version

5.8.21

PHP version

8.3

Operating system and version

Ubuntu 24.04 (WSL2)

Database type and version

MySQL 8.0.40

Image driver and version

No response

Installed plugins and versions

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions