你好。我在 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
之后我得到一个错误:
Unknown command: some/test
为什么会这样? 我用绝对路径调用命令,从不同的文件夹调用时它的工作方式不同!
最佳答案
您需要使用魔术常量 __DIR__
来构建绝对路径。 realpath('../../')
的结果将取决于您运行命令的路径。你应该使用
$config['basePath'] = realpath(__DIR__ . '/../../')
或(可能更好):
$config['basePath'] = dirname(dirname(__DIR__))
关于php - Yii2 不从项目文件夹调用控制台命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51152281/