Задать вопрос
Kasperenysh
@Kasperenysh
Рецидив в особо острой форме))

Почему не сохраняются файлы в новой поддиректории?

Сама суть проблемы, если я сохраняю картинку в директорию uploads/image.jpg - все норм, если сохраняю в существующую поддиректорию uploads/images/image.jpg - тоже прекрасно, но при попытке сохранить в новую поддиректорию, например uploads/photos/image.jpg - ошибка вываливается... но если на сервере руками создать такую поддиректорию - то все работает....

В чем может быть проблема? У uploads права 755

З.Ы. использую пакет, который под капотом вызывает функцию file_put_content + пытался руками создавать через Storage::makeDirectory($path) - тщетно...

Код:
public function setPhotoAttribute($photo)
    {
        $fileName = md5($photo->getClientOriginalName() . time()) . '.' . $photo->getClientOriginalExtension();

        foreach ($this->images as $folder) {
            $parameter = explode('x', $folder);
            $img = Image::make($photo);
            if (count($parameter) === 2) {
                [$width, $height] = $parameter;
                $img->resize($width, $height);
            }

            $path = Storage::path("photos/{$folder}/");
            if(!Storage::exists($path)){
                Storage::makeDirectory($path);
            }

            $img->save($path . $fileName);
        }

        $this->attributes['photo'] = $fileName;
    }
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Средний 16 комментариев
Решения вопроса 1
Kasperenysh
@Kasperenysh Автор вопроса
Рецидив в особо острой форме))
Проблема решил) нагуглил что строка Storage::path("photos/{$folder}/"); возвращает абсолютный путь, а Storage::exists($path) принимает путь относительно корня проекта.
Вот так заработало:
$path = "photos/{$folder}/";
if(!Storage::exists($path)){
    Storage::makeDirectory($path);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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