Yii2 - 命令控制器不工作getalias webroot

时间:2017-03-16 20:28:04

标签: php yii yii2 command

当我通过终端运行命令控制器时, Yii::getAlias('@webroot')不起作用= /

命令(QueuePushNotificationController.php):

<?php
     namespace app\commands;

     use Yii;
     use yii\console\Controller;

     class QueuePushNotificationController extends Controller
     {
         public function actionIndex()
         {
             echo Yii::getAlias('@webroot');
         }
     }

通过终端执行:

./yii queue-push-notification

返回:

Exception 'yii\base\InvalidParamException' with message 'Invalid path alias: @webroot'

不适用于应用程序吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

在yii2命令中unfind(webroot或web)别名,web index.php yii \ web \ Application.php defind方法

 protected function bootstrap()
 {
      $request = $this->getRequest();
      Yii::setAlias('@webroot', dirname($request->getScriptFile()));
      Yii::setAlias('@web', $request->getBaseUrl());

      parent::bootstrap();
 }

但是,你可以看到yii \ console \ Application没有bootstrap()方法。 你可以很好地解决这个问题,

 public function init()
 {
        Yii::setAlias('@webroot', Specific path );
        Yii::setAlias('@web', Specific path);
        parent::init(); // TODO: Change the autogenerated stub
 }