php - Yii2 不从项目文件夹调用控制台命令

标签 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

为什么会这样? 我用绝对路径调用命令,从不同的文件夹调用时它的工作方式不同!

最佳答案

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

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

或(可能更好):

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

关于php - Yii2 不从项目文件夹调用控制台命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51152281/

相关文章:

java - Tomcat 安装在远程服务器上。如何在本地浏览器上查看

linux - 实现 Nagios Topography 以避免过度警报

yii2 - 将原始 mysql 查询隐藏到 yii2 查询 2 左连接子查询并对所有内容求和

具有无限 GET 参数的 YII2 urlManager 规则

php - PHP QuickForm 的替代品?

php - 使用 Laravel 应用程序发送大量电子邮件

javascript - 如何将 data-id 变量从模式传递到 php 页面

Python,在 linux 中通过 lspci 或 HAL 获取 VGA 规范?

php - 在 null 上调用成员函数 getDb()

php - 具有两个值的 html/php 多选