Команда storage:link
Команда storage:link создаёт символическую ссылку из директории public/storage в директорию storage/app/public. Это необходимо для того, чтобы файлы, загруженные пользователями или сгенерированные приложением, были доступны через веб-сервер. По умолчанию Laravel использует символическую ссылку для публичного доступа к файлам в хранилище. Команда выполняется без параметров и автоматически создаёт ссылку, если она ещё не существует.
Синтаксис
php artisan storage:link
Пример
Запустим команду для создания символической ссылки на хранилище:
php artisan storage:link
Результат выполнения команды:
"The [public/storage] link has been connected to [storage/app/public]."
Пример
После создания ссылки мы можем сохранить файл в хранилище и получить его публичный URL:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class FileController extends Controller
{
public function upload(Request $request)
{
$path = $request->file('avatar')->store('avatars', 'public');
$url = Storage::url($path);
echo $url;
}
}
?>
Результат выполнения кода:
"/storage/avatars/photo.jpg"
Пример
Проверим, существует ли символическая ссылка, перед её созданием:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;
class CheckStorageLink extends Command
{
protected $signature = 'check:storage-link';
protected $description = 'Check if storage link exists';
public function handle()
{
$linkPath = public_path('storage');
if (File::exists($linkPath)) {
echo "Storage link already exists";
} else {
echo "Storage link does not exist";
}
}
}
?>
Результат выполнения кода:
"Storage link already exists"
Смотрите также
-
команда
serve,
которая запускает встроенный веб-сервер для разработки -
команда
key:generate,
которая генерирует новый ключ приложения -
команда
vendor:publish,
которая публикует файлы из пакетов в приложение -
команда
optimize,
которая кэширует конфигурацию и маршруты для улучшения производительности