当我通过终端运行命令控制器时,
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'
不适用于应用程序吗?
谢谢!
答案 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
}