Страница 1 из 1

Версия 2.0.43 AssetsManager

Добавлено: 2021.11.09, 18:29
ddmitrenko
Всем привет. Сегодня поставил версию 2.0.43. В файле \vendor\yiisoft\yii2\web\AssetManager.php в функции инициализации компонента(строка 208) обнаружил, что была убрана проверка на реальное существование пути в переменной basePath .

Код: Выделить всё

public function init()
    {
        parent::init();
        $this->basePath = Yii::getAlias($this->basePath);

        $this->basePath = realpath($this->basePath);
        $this->baseUrl = rtrim(Yii::getAlias($this->baseUrl), '/');
    }
После применения функции realpath к несуществующему пути получаем false и далее сообщение из функции checkBasePathPermission() - The directory does not exist: без указания имени директории. И непонятно, что надо исправлять.
В качестве решения - можно вернуть проверку в инициализацию компонента, как было ранее.

Re: Версия 2.0.43 AssetsManager

Добавлено: 2021.11.10, 07:10
unknownby
А установить basePath в конфигах приложения пробовали?
Из документации:
В любом приложении, вы должны настроить минимум два свойства: id и basePath.

Re: Версия 2.0.43 AssetsManager

Добавлено: 2021.11.10, 12:08
ddmitrenko
Как решить свой вопрос я знаю. Вопрос в том, что если установить basePath в несуществующую директорию - не получится вразумительного ответа по данной ошибке.

Re: Версия 2.0.43 AssetsManager

Добавлено: 2021.11.11, 14:08
samdark
Скорее всего, речь про https://github.com/yiisoft/yii2/pull/18381. Там проверку не убрали, а перенесли непосредственно к моменту публикации ассета.

Re: Версия 2.0.43 AssetsManager

Добавлено: 2021.11.11, 14:16
ddmitrenko
$this->basePath = realpath($this->basePath); - после этой строки уже нет пути :(

Re: Версия 2.0.43 AssetsManager

Добавлено: 2021.11.11, 14:25
ElisDN

Код: Выделить всё

$path = realpath($this->basePath);

if ($path === false) {
    throw new ...
}

$this->basePath = $path;