Yii2 - Invalid path alias: @webroot
В очередной раз столкнулся с ошибкой "Invalid path alias: @webroot" в Yii2. Решил сделать заметку, чтобы было проще гуглить..
Полностью данная ошибка выглядит так:
1 2 3 4 |
Exception 'yii\base\InvalidParamException' with message 'Invalid path alias: @webroot' in /public_html/vendor/yiisoft/yii2/BaseYii.php:154 |
Чаще всего появляется, когда обращаетесь к алиасу в консольном приложении (в контроллере унаследованном от yii\console\Controller)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php namespace app\commands; use Yii; use yii\console\Controller; class TestController extends Controller { public function actionIndex() { echo Yii::getAlias('@webroot').PHP_EOL; } } |
Возникает из-за того, что для консольного приложения (в отличии от веб), этот алиас не определен.
Посмотреть предопределенные алиасы можно так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php namespace app\commands; use Yii; use yii\console\Controller; class TestController extends Controller { public function actionIndex() { print_r(Yii::$aliases); } } |
результат будет вот такой
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Array ( [@yii] => Array ( [@yii/swiftmailer] => /public_html/vendor/yiisoft/yii2-swiftmailer [@yii/gii] => /public_html/vendor/yiisoft/yii2-gii [@yii/faker] => /public_html/vendor/yiisoft/yii2-faker [@yii/debug] => /public_html/vendor/yiisoft/yii2-debug [@yii/bootstrap] => /public_html/vendor/yiisoft/yii2-bootstrap [@yii] => /public_html/vendor/yiisoft/yii2 ) [@app] => /public_html [@vendor] => /public_html/vendor [@bower] => /public_html/vendor/bower [@npm] => /public_html/vendor/npm [@runtime] => /public_html/runtime ) |
исправить можно добавив нужный алиас в конфигурацию, в файл www/config/console.php
1 2 3 4 5 6 7 8 9 |
$config = [ 'id' => 'basic-console', ... 'aliases' => [ '@webroot' => dirname(dirname(__FILE__)) . '/web', ], ]; |
если теперь повторить вывод алиасов, то увидите, что @webroot добавился в конец
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Array ( [@yii] => Array ( [@yii/swiftmailer] => /public_html/vendor/yiisoft/yii2-swiftmailer [@yii/gii] => /public_html/vendor/yiisoft/yii2-gii [@yii/faker] => /public_html/vendor/yiisoft/yii2-faker [@yii/debug] => /public_html/vendor/yiisoft/yii2-debug [@yii/bootstrap] => /public_html/vendor/yiisoft/yii2-bootstrap [@yii] => /public_html/vendor/yiisoft/yii2 ) [@app] => /public_html [@vendor] => /public_html/vendor [@bower] => /public_html/vendor/bower [@npm] => /public_html/vendor/npm [@runtime] => /public_html/runtime [@webroot] => /public_html/web ) |
теперь можно обращаться к этому алиасу из консольного приложения
Author: | Tags: /
| Rating:
Leave a Reply