Php Yii2-获取未知属性:yii\console\Request::userAgent和类db不存在

Php Yii2-获取未知属性:yii\console\Request::userAgent和类db不存在,php,yii2,yii2-advanced-app,Php,Yii2,Yii2 Advanced App,我对Yi2框架版本2.0.42.1和Yi2高级应用程序模板项目有问题 当我运行yii php脚本时:php yii 它返回以下错误: Exception 'yii\base\UnknownPropertyException' with message 'Getting unknown property: yii\console\Request::userAgent' in /usr/src/app/vendor/yiisoft/yii2/base/Component.php:155 Stac

我对Yi2框架版本2.0.42.1和Yi2高级应用程序模板项目有问题

当我运行yii php脚本时:
php yii

它返回以下错误:

Exception 'yii\base\UnknownPropertyException' with message 'Getting unknown property: yii\console\Request::userAgent'

in /usr/src/app/vendor/yiisoft/yii2/base/Component.php:155

Stack trace:
#0 /usr/src/app/common/components/VerificationNavigateur.php(23): yii\base\Component->__get('userAgent')
#1 /usr/src/app/vendor/yiisoft/yii2/base/BaseObject.php(109): common\components\VerificationNavigateur->init()
#2 /usr/src/app/common/components/AppBootstrap.php(20): yii\base\BaseObject->__construct()
#3 /usr/src/app/vendor/yiisoft/yii2/base/Application.php(333): common\components\AppBootstrap->bootstrap(Object(yii\console\Application))
#4 /usr/src/app/vendor/yiisoft/yii2/base/Application.php(279): yii\base\Application->bootstrap()
#5 /usr/src/app/vendor/yiisoft/yii2/console/Application.php(125): yii\base\Application->init()
#6 /usr/src/app/vendor/yiisoft/yii2/base/BaseObject.php(109): yii\console\Application->init()
#7 /usr/src/app/vendor/yiisoft/yii2/base/Application.php(212): yii\base\BaseObject->__construct(Array)
#8 /usr/src/app/vendor/yiisoft/yii2/console/Application.php(90): yii\base\Application->__construct(Array)
#9 /usr/src/app/yii(22): yii\console\Application->__construct(Array)
在我运行composer安装之前,一切都很好

即使我尝试降级框架
composer require yiisoft/yii2:2.0.41
,这也不会改变任何事情

当我尝试从vendor文件夹运行php脚本时,一切正常
php vendor/bin/yii

但当我尝试运行迁移
php vendor/bin/yii migrate
时,会出现以下错误:

Yii Migration Tool (based on Yii v2.0.42.1)

Exception 'yii\di\NotInstantiableException' with message 'Failed to instantiate component or class "db".'

in /usr/src/app/vendor/yiisoft/yii2/di/Container.php:510

Caused by: Exception 'ReflectionException' with message 'Class db does not exist'

in /usr/src/app/vendor/yiisoft/yii2/di/Container.php:508

Stack trace:
#0 /usr/src/app/vendor/yiisoft/yii2/di/Container.php(508): ReflectionClass->__construct('db')
#1 /usr/src/app/vendor/yiisoft/yii2/di/Container.php(386): yii\di\Container->getDependencies('db')
#2 /usr/src/app/vendor/yiisoft/yii2/di/Container.php(171): yii\di\Container->build('db', Array, Array)
#3 /usr/src/app/vendor/yiisoft/yii2/di/Instance.php(176): yii\di\Container->get('db')
#4 /usr/src/app/vendor/yiisoft/yii2/di/Instance.php(145): yii\di\Instance->get(NULL)
#5 /usr/src/app/vendor/yiisoft/yii2/console/controllers/MigrateController.php(183): yii\di\Instance::ensure(Object(yii\di\Instance), 'yii\\db\\Connecti...')
#6 /usr/src/app/vendor/yiisoft/yii2/base/Controller.php(179): yii\console\controllers\MigrateController->beforeAction(Object(yii\base\InlineAction))
#7 /usr/src/app/vendor/yiisoft/yii2/console/Controller.php(184): yii\base\Controller->runAction('up', Array)
#8 /usr/src/app/vendor/yiisoft/yii2/base/Module.php(534): yii\console\Controller->runAction('up', Array)
#9 /usr/src/app/vendor/yiisoft/yii2/console/Application.php(181): yii\base\Module->runAction('migrate/up', Array)
#10 /usr/src/app/vendor/yiisoft/yii2/console/Application.php(148): yii\console\Application->runAction('migrate/up', Array)
#11 /usr/src/app/vendor/yiisoft/yii2/base/Application.php(392): yii\console\Application->handleRequest(Object(yii\console\Request))
#12 /usr/src/app/vendor/yiisoft/yii2/yii(37): yii\base\Application->run()
#13 {main}
我的数据库配置连接文件没有更改,common/config/main-local.php:

<?php
return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'pgsql:host=172.21.0.3;dbname=dev',
            'username' => 'dev',
            'password' => 'dev',
            'charset' => 'utf8',
        ],
       ...

问题出在这个组件
common\components\VerificationNavigateEUR

您正在其
init()
方法中访问
Yii::$app->request->userAgent
。此属性仅在
yii\web\Request
中可用。 在您的应用程序中,组件
common\components\VerificationNavigationEUR
甚至对于您的控制台应用程序也是引导的。但是在这种情况下,属性
Yii::$app->request
包含
Yii\console\request
的实例,该实例没有属性
userAgent

如果您的控制台应用程序中不需要该组件,则应在控制台配置中将其删除。如果您需要console app中的该组件,您应该修改其
init()
方法,以检查
Yii::$app->request
是否是
Yii\web\request
的实例,然后再访问
userAgent
属性,例如:

if(\Yii::$app->request instanceof\Yii\web\request){
//…用Yii做点什么::$app->request->userAgent
}

如果是
php供应商/bin/yii
则不使用您的应用程序配置。这就是为什么该组件没有引导,并且您不会遇到该错误。但是,由于没有加载配置,因此没有对
db
组件进行配置,迁移也不起作用。

添加完整的
common/config/main.php
common/config/main local.php
谢谢您的回答。是的,确实是组件
common\components\verificationnavigationeur
造成了问题。我忘了提到所有这些都是在我从一位同事那里提取代码之后发生的。现在它工作得很好!