yii2.0错误:Exception yii\base\InvalidConfigException with message

一、前言

      最近碰到一个yii2.0的报错,网上查的时候也没什么太好的资料参考,所以就记录一下。完整的报错是:

Exception 'yii\base\InvalidConfigException' with message 'Failed to instantiate component or class "Array"

二、错误堆栈

      既然查不到类似的错误,那就只能从错误堆栈上找问题了,这里博主自己心态也有问题,习惯于百度谷歌搜索问题,反而忘记了分析原始的堆栈错误,实在不应该。

Stack trace:
#0 xx\vendor\yiisoft\yii2\di\Container.php(374): yii\di\
Container->getDependencies(Array)   //数组
#1 xx\vendor\yiisoft\yii2\di\Container.php(159): yii\di\
Container->build(Array, Array, Array)  //数组
#2 xx\vendor\yiisoft\yii2\BaseYii.php(365): yii\di\Conta
iner->get(Array, Array, Array)		//数组
#3 xx\vendor\yiisoft\yii2\di\ServiceLocator.php(137): yi
i\BaseYii::createObject(Array)		//数组
#4 xx\vendor\yiisoft\yii2\base\Module.php(742): yii\di\S
erviceLocator->get('session', true)	//从这步读取session开始,之后的处理就是数组了,那应该是session问题
#5 xx\vendor\yiisoft\yii2\di\ServiceLocator.php(74): yii
\base\Module->get('session')
#6 xx\console\controllers\AutoController.php(217): yii\d
i\ServiceLocator->__get('session')
#7 xx\vendor\yiisoft\yii2\base\Controller.php(155): cons
ole\controllers\AutoController->beforeAction(Object(yii\base\InlineAction))
#8 xx\vendor\yiisoft\yii2\console\Controller.php(164): y
ii\base\Controller->runAction('parse-cost', Array)
#9 xx\vendor\yiisoft\yii2\base\Module.php(528): yii\cons
ole\Controller->runAction('parse-cost', Array)
#10 xx\vendor\yiisoft\yii2\console\Application.php(180):
 yii\base\Module->runAction('auto/parse-cost', Array)
#11 xx\vendor\yiisoft\yii2\console\Application.php(147):
 yii\console\Application->runAction('auto/parse-cost', Array)
#12 xx\vendor\yiisoft\yii2\base\Application.php(386): yi
i\console\Application->handleRequest(Object(yii\console\Request))
#13 xx\yii(39): yii\base\Application->run()
#14 {main}

三、错误原因

      根据堆栈信息,是读取session配置的时候出现的错误,因此更应该从配置上下手。从新看一下当前项目的配置信息,发现定义了两次session,也就是说,session的定义是不能重复的,重复的话就会认为是数组,容器读取配置就会出错,删除一个即可

return array_merge_recursive(
    require(dirname(__FILE__) . "/../../common/config/main.php"),   //这里面也有个session的定义
    array(
        'id' => 'app-console',
        'basePath' => dirname(__DIR__),
        'bootstrap' => ['log'],
        'controllerNamespace' => 'console\controllers',

        'components' => [
            'session' => [
                'class' => 'yii\web\CacheSession',  // -- 用cache存储session, cache参考main-local的cache设置
                'cache' => 'cache', // -- 定义cache类
            ],
        ]
    )
);

end

你可能感兴趣的:(php日常bug,php,yii2.0)