-
Notifications
You must be signed in to change notification settings - Fork 684
Closed
Labels
Description
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
Reactions are currently unavailable