从扩展程序迁移说有配置错误

时间:2014-07-02 13:35:04

标签: php database-migration yii-extensions yii2

当我从我的扩展程序运行迁移时(扩展程序在浏览网站时正常工作):

yii migrate --migrationPath=c:/wamp/www/mysite/vendor/author/extension_name/migration

我收到了以下错误:

Exception 'yii\base\InvalidConfigException' with message 'The configuration 
for the "user" component must contain a "class" element.'
in C:\wamp\www\happychat\vendor\yiisoft\yii2\di\ServiceLocator.php:201

但我的user组件配置通常是:

'user' => [
        'identityClass' => 'author\user\models\AuthUser',
        'enableAutoLogin' => true,
        'loginUrl' => 'user/auth/login',
    ],

无论如何,这与迁移有什么关系?如果我删除此迁移有效,但我不想在每次要迁移时删除它。 我甚至尝试通过运行以下来迁移默认应用迁移:

yii migrate

并且出现与上述相同的错误。怎么解决?

更新: 添加堆栈跟踪:

#0 C:\wamp\www\happychat\vendor\yiisoft\yii2\di\ServiceLocator.php(257): yii\di\ServiceLocator->set('user', Array)
#1 C:\wamp\www\happychat\vendor\yiisoft\yii2\base\Component.php(168): yii\di\ServiceLocator->setComponents(Array)
#2 C:\wamp\www\happychat\vendor\yiisoft\yii2\BaseYii.php(518): yii\base\Component->__set('components', Array)
#3 C:\wamp\www\happychat\vendor\yiisoft\yii2\base\Object.php(105): yii\BaseYii::configure(Object(yii\console\Application), Array)
#4 C:\wamp\www\happychat\vendor\yiisoft\yii2\base\Application.php(201): yii\base\Object->__construct(Array)
#5 C:\wamp\www\happychat\vendor\yiisoft\yii2\console\Application.php(78): yii\base\Application->__construct(Array)
#6 C:\wamp\www\happychat\yii(29): yii\console\Application->__construct(Array)
#7 {main}

1 个答案:

答案 0 :(得分:2)

我唯一能想到的是您碰巧在迁移代码中使用了Url或会话功能。不幸的是,没有完整的堆栈跟踪这很难说。也许您应该将其添加到您的问题中?如果我们能够看到它最终如何加载用户组件,它应该会使事情变得更加清晰。

仅供参考:Yii仅在核心组件的组件配置中自动添加class - 属性。用户确实是这样定义的,但仅适用于基于web\Application的应用程序。这就是为什么它在这种情况下正常工作。

修改:

感谢堆栈跟踪!这清除了事情。

跟踪表明在初始化期间发生错误。 这几乎只意味着一件事:您已将自定义user配置添加到common\文件夹下的配置文件中。 鉴于应用程序的commonconsole部分都使用web,Yii正常工作但确实获得了无效配置。

只需将user配置移动到frontend下的配置文件(或任何包含您的Web可访问结构的文件夹),就可以解决问题。