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
为什么会这样? 我用绝对路径调用该命令,并且从不同文件夹中调用该命令时,其工作方式有所不同!
答案 0 :(得分:1)
您需要使用魔术常数__DIR__
来建立绝对路径。 realpath('../../')
的结果将取决于您运行命令的路径。您应该使用
$config['basePath'] = realpath(__DIR__ . '/../../')
或(可能更好):
$config['basePath'] = dirname(dirname(__DIR__))