Laravel удаляет файл при разработке Windows

В моей локальной среде разработки (xampp, windows) у меня есть файл

D: \ Documents \ repos \ somerepo \ public \ img \ ванная \ 8 \ small \ someimage.jpg

Пытаюсь удалить с помощью:

Storage::delete(public_path('img/bathroom/8/small/someimage.jpg'));

Однако после запуска кода файл все еще существует. Когда я печатаю путь к public_path('img/bathroom/8/small/someimage.jpg') и копирую его в файл, он отлично открывает файл. Как я могу заставить laravel удалить файл?

Когда я бегу:

    if(File::exists($path)){
        return $path." Does not exist";
    }

Если путь public_path('img/bathroom/8/small/someimage.jpg'), он говорит мне, что его не существует.


person Sven van den Boogaart    schedule 04.06.2020    source источник


Ответы (1)


Предполагая, что вы используете конфигурацию файловой системы по умолчанию, public disk хранит файлы в storage/app/public. local диск использует storage/app. Короче говоря, оба локальных диска управляют файлами в storage/.

public_path() helper возвращает полный путь к общедоступному каталогу. . Так:

public_path('img/bathroom/8/small/someimage.jpg')

создаст такой путь:

/your/project/public/img/bathroom/8/small/someimage.jpg

Обратите внимание, что это не в storage/, где работают оба Storage локальных диска. Передача Storage полного пути вне корня файловой системы, которой он управляет, не сработает.

Для работы с файлами вне корней дисков, для которых настроен Storage, вам придется использовать стандартные функции PHP, такие как unlink() и т. Д. В качестве альтернативы переместите файлы, которые вы хотите поддерживать с помощью Storage, в один из диски, для которых он настроен, добавьте символическую ссылку, чтобы они видны, и обновите ссылки на эти файлы в ваших представлениях и т. д.

person Don't Panic    schedule 05.06.2020
comment
Сейчас мои файлы находятся в публичном хранилище, а не в хранилище, я постараюсь узнать, как работает работа с хранилищем. - person Sven van den Boogaart; 09.06.2020