当前位置: 首页 > 知识库问答 >
问题:

yii2控制台应用程序错误'未能实例化组件或类"user"。'

公孙涵育
2023-03-14

我对Yii2很陌生。我创建了一个前端Yii2应用程序,现在我想定义一个cronwork,每天晚上都会调用一些操作。

我为此创建了一个简单的控制台应用程序,遵循以下教程:https://www.yiiframework.com/wiki/646/how-to-implement-cron-in-yii-2,代码如下:

namespace console\controllers;

use yii\console\Controller;

class CronController extends Controller {
    public function actionIndex() {
        echo "cron service runnning";
    }
}

我试着通过运行这个来称呼它:

php yii cron/index

但我得到以下错误:

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

in /var/www/html/my-yii2-app/vendor/yiisoft/yii2/di/Instance.php:139

Stack trace:
#0 /var/www/html/my-yii2-app/vendor/yiisoft/yii2/filters/AccessControl.php(100): yii\di\Instance::ensure(Object(yii\di\Instance), 'yii\\web\\User')
#1 /var/www/html/my-yii2-app/vendor/yiisoft/yii2/base/Object.php(107): yii\filters\AccessControl->init()
#2 [internal function]: yii\base\Object->__construct(Array)
#3 /var/www/html/my-yii2-app/vendor/yiisoft/yii2/di/Container.php(381): ReflectionClass->newInstanceArgs(Array)
#4 /var/www/html/my-yii2-app/vendor/yiisoft/yii2/di/Container.php(156): yii\di\Container->build('yii\\filters\\Acc...', Array, Array)
#5 /var/www/html/my-yii2-app/vendor/yiisoft/yii2/BaseYii.php(348): yii\di\Container->get('yii\\filters\\Acc...', Array, Array)
#6 /var/www/html/my-yii2-app/vendor/yiisoft/yii2/base/Component.php(183): yii\BaseYii::createObject(Array)
#7 /var/www/html/my-yii2-app/vendor/yiisoft/yii2/BaseYii.php(529): yii\base\Component->__set('beforeRequest', Array)
#8 /var/www/html/my-yii2-app/vendor/yiisoft/yii2/base/Object.php(105): yii\BaseYii::configure(Object(yii\console\Application), Array)
#9 /var/www/html/my-yii2-app/vendor/yiisoft/yii2/base/Application.php(205): yii\base\Object->__construct(Array)
#10 /var/www/html/my-yii2-app/vendor/yiisoft/yii2/console/Application.php(89): yii\base\Application->__construct(Array)
#11 /var/www/html/my-yii2-app/yii(26): yii\console\Application->__construct(Array)
#12 {main}

common/config/main的内容。php:

return [
    'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
    'components' => [
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
    ],

    //if guest user access site so, redirect to login page.
    'as beforeRequest' => [  
        'class' => 'yii\filters\AccessControl',
        'rules' => [
            [
                'actions' => ['login', 'error'],
                'allow' => true,
            ],
            [
                'allow' => true,
                'roles' => ['@'],
            ],
        ],
    ],
    // end if guest user access site so, redirect to login page.
    'language' => 'ro-RO',

    'modules' => [
        'attachments' => [
            'class' => nemmo\attachments\Module::className(),
            'tempPath' => '@app/../uploads/temp',
            'storePath' => '@app/../uploads/store',
            'rules' => [ // Rules according to the FileValidator
                'maxFiles' => 10, // Allow to upload maximum 3 files, default to 3
                //'mimeTypes' => 'image/png', // Only png images
                //'maxSize' => 1024 * 1024 // 1 MB
            ],
            //'tableName' => '{{%attachments}}' // Optional, default to 'attach_file'
            'tableName' => 'attachment' // Optional, default to 'attach_file'
        ]
    ]
];

控制台/config/main的内容。php:

$params = array_merge(
    require(__DIR__ . '/../../common/config/params.php'),
    require(__DIR__ . '/../../common/config/params-local.php'),
    require(__DIR__ . '/params.php'),
    require(__DIR__ . '/params-local.php')
);

return [
    'id' => 'app-console',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'console\controllers',
    'controllerMap' => [
        'fixture' => [
            'class' => 'yii\console\controllers\FixtureController',
            'namespace' => 'common\fixtures',
          ],
        'migrate' => [
            'class' => 'yii\console\controllers\MigrateController',
            'migrationNamespaces' => [
                'nemmo\attachments\migrations',
            ],
        ],
    ],
    'components' => [
        'log' => [
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
    ],
    'params' => $params,
];

我不知道会出什么问题。

OS: CentOS 7, PHP版本7

共有1个答案

薄烨
2023-03-14
//if guest user access site so, redirect to login page.
'as beforeRequest' => [  
    'class' => 'yii\filters\AccessControl',
    'rules' => [
        [
            'actions' => ['login', 'error'],
            'allow' => true,
        ],
        [
            'allow' => true,
            'roles' => ['@'],
        ],
    ],
],

AccessControl在控制台应用程序配置中没有任何意义(没有Yii:$app-

您应该将此设置移到更高的级别,可能是frontend/config/main。php后端/config/main。php,因此它将仅用于web应用程序。

 类似资料:
  • 我试图在中运行控制台应用程序,但出现错误。 异常“yii\base\UnknownPropertyException”,在F:\xampp\htdocs\mdc\vendor\yiisoft\yii2\base\Component中显示消息“设置未知属性:yii\console\Response::formatters”。菲律宾比索:209 Common\config\main本地。php Cro

  • 是否有可能构建一个控制台应用程序与Quarkus?换句话说,它并没有启动Web服务,只是从头到尾运行。

  • 我在上传文件时遇到错误。Google play控制台中的aab捆绑包与现有密钥库。我有白标签应用程序和密钥库文件 你上传了一个APK或Android应用捆绑包,该捆绑包使用一个密钥签名,该密钥也用于签名交付给用户的APK 在Android应用程序包的概念中,所有30个应用程序都可以使用相同的密钥库文件和密码,还是我们需要为所有30个应用程序创建单独的密钥库和密码?

  • sh wget progressbar colorama Gooey——把 CLI 程序变成 GUI

  • 当我在gvm中进入grails控制台时,控制台加载时出现了几个错误。我看了其他答案,但没有提到grails和groovy的最新版本。 我运行的是LinuxMint17.1,拥有Grails3.0.3版、groovy 2.4.3版和JVM 1.8.045版。 此外,以下是加载的一些错误: 线程“thread-14”groovy中出现异常。lang.MissingPropertyException:没

  • 我目前正在使用Windows控制台制作一个平台游戏。但是,我在发出多个命令时遇到了一个问题。 例如,当我让我的角色朝一个方向运行,然后按“跳跃”时,按住run键的事实被忘记,必须再次按下。 是否有一种输入法可以检查哪些键被按住或按下?或者更确切地说,是检查重复输入的一种方法? 以下是我目前的代码供参考:http://pastebin.com/2y6Rf6rb 我目前使用的输入法是: