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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章