Yii2不是从项目文件夹中调用控制台命令

时间:2018-07-03 10:27:22

标签: php linux yii2 console

你好。我在Yii2中创建了控制台命令:

projectDir/commands/SomeController.php

<?php
namespace app\commands;

use yii\console\Controller;

/**
 * Class SomeController
 * @package app\commands
 */
class SomeController extends Controller
{
    public function actionTest()
    {
        //do something
    }
}

我想在cron中调用此命令,为了进行测试,当我位于项目文件夹中时,尝试从控制台调用该命令:

php /var/www/projectDir/yii some/test

一切正常。但是,如果我在其他目录中时调用此命令,则会出现一些错误。

首先,我

ReflectionException: Class app\admin\templates\Generator does not exist in /var/www/projectDir/vendor/yiisoft/yii2/di/Container.php:428

看到这一点,我在文件projectDir/common/config/config-console.php

中评论了gii的配置。

那之后我得到一个错误:

Unknown command: some/test

为什么会这样? 我用绝对路径调用该命令,并且从不同文件夹中调用该命令时,其工作方式有所不同!

1 个答案:

答案 0 :(得分:1)

您需要使用魔术常数__DIR__来建立绝对路径。 realpath('../../')的结果将取决于您运行命令的路径。您应该使用

$config['basePath'] = realpath(__DIR__ . '/../../')

或(可能更好):

$config['basePath'] = dirname(dirname(__DIR__))