@elizaveta_kotik

YII2 «failed to open stream: No such file or directory» Как исправить?

Мой класс для работы с изображениями:
51fe84e9158f4c83b7a1d2fcf08eed24.png
И его использование:
58227858a3914ebda6b492cd831c2746.png
После чего всё нормально
08c84250019548039f0f0d335cf3fa7b.png

Но как только я пишу сохранение картинки в определённой директории
6b57833ac5354b6586d9239d93f56599.png
Вылазит следующая ошибка
071a23ef03a742f8b92ea579718fca73.png
даже если я изменю и поставлю слеш перед uploads
$file->saveAs(Yii::getAlias('@web').'/uploads/'.$file->name);

Ничего не измениться. Я использую сервер MAMP и macOS. Может поэтому он не может найти? Если да, то как это исправить?
  • Вопрос задан
  • 3262 просмотра
Решения вопроса 2
mhthnz
@mhthnz
PHP, YII2, Golang, Linux
@webroot указывает на корень приложения, нужно использовать его:
$file->saveAs(Yii::getAlias('@webroot').'/uploads/'.$file->name);
Ответ написан
Комментировать
qonand
@qonand
Software Engineer
Проблема в том что Вы используйте алиас @web который содержит базовый URL текущего приложения, а Вам необходимо получить адрес к веб-руту. Для этого используйте алиас @webroot. Ну и проверьте что бы в нем была папка uploads
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@davidnum95
А картинка то сохраняется?
Попробуй так:
алиас
'@upload_dir' => dirname(__DIR__) . '/web/uploads',

сохранение
$file->saveAs(Yii::getAlias('@upload_dir') . $file->name)

Также проверь права на запись в директорию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы