Ваш $ img_path, по-видимому, задан с полным путем к файлу, а не путем относительно базы вашего указанного диска, который был бы возвращен $file->storeAs()
при сохранении файла.
Это должно работать:
Storage::disk('upload')->delete('upload/users/1/5bc722d2b7c05.jpg')
Если по какой-то причине вам нужен полный путь на диске, попробуйте следующее:
Storage::disk('upload')->path('upload/users/1/5bc722d2b7c05.jpg')
Проверьте, существует ли файл:
Storage::disk('upload)->exists('upload/users/1/5bc722d2b7c05.jpg')
ИЛИ File::exists(Storage::disk('upload')->path('upload/users/1/5bc722d2b7c05.jpg'))
(возвращает C:\Users\Me\Desktop\final\public\upload/users/1/5bc722d2b7c05.jpg
, так как ваш диск для загрузки имеет базу public_path()
)
Разрешения на чтение / запись для веб-сервера также могут входить в игру, в зависимости от конфигурации вашего сервера.Обычно вы не будете хранить вещи непосредственно в папке public/
, а скорее в storage/app/public
и использовать php artisan storage:link
для создания символической ссылки на каталог хранилища.Вы можете прочитать больше здесь: https://laravel.com/docs/5.7/filesystem#the-public-disk
В качестве примечания, Windows принимает либо /
, либо \
, поэтому использование /
значительно упрощает использование ваших сценариев в других системах и уменьшает головную боль ввыходящая строка.