Прежде всего, добро пожаловать в StackOverflow.
Я думаю, вам следует глубже взглянуть на официальную документацию
Файл конфигурации файловой системы находитсяна config/filesystems.php
. В этом файле вы можете настроить все ваши «диски». Каждый диск представляет определенный драйвер и место хранения.
Это ваша проблема. В вашем filesystems.php
файле у вас есть следующая конфигурация (если вы не внесли каких-либо изменений):
return [
/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
*/
'default' => env('FILESYSTEM_DRIVER', 'local'),
// [...]
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
],
];
С этой конфигурацией Laravel возьмет в качестве корня для вашего хранилища папку storage/app
и включит ваш пользовательскийпуть (в данном случае storage/app/public/Images
). Если вы хотите что-то сохранить в общей папке, измените конфигурацию следующим образом.
return [
/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
*/
'default' => 'public', // <-- Set the default disk
// [...]
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => public_path(), // <-- Change the default path to the public folder
'url' => env('APP_URL'), // <-- And the default URL
'visibility' => 'public',
],
],
];
В любом случае, это не лучший способ. Как вы писали, вы также использовали команду php artisan storage:link
, которая создает символическую ссылку из папки storage/app/public
на путь public/storage
. Таким образом, все файлы, хранящиеся в этой папке, будут видны с помощью таких команд, как asset('storage/my-public-image.jpg')
.
. Кроме того, Laravel имеет свою собственную функцию $url = Storage::url('file.jpg');
, которая автоматически создает URL на основеустановленный вами конфиг (параметр url в конфигурации диска).
Вот почему, если в вашей производственной среде у вас нет возможности создавать символические ссылки, сохраняя файлы непосредственно вОбщая папка бесполезна и, в большинстве случаев, небезопасна.