ファイルストレージ
はじめに
Laravelは、Frank de Jongeによる素晴らしい Flysystem PHPパッケージによって強力なファイルシステム抽象化を提供しています。Laravel Flysystem 統合により、ローカルファイルシステム、SFTP、Amazon S3 などと簡単に連携できるドライバが提供されます。さらに、API は各システムごとに同じままなので、開発環境と本番サーバー間でこれらのストレージオプションを簡単に切り替えることができます。
構成
Laravelのファイルシステム構成ファイルは config/filesystems.php
にあります。このファイルでは、すべてのファイルシステム "ディスク" を構成できます。各ディスクは特定のストレージドライバとストレージ場所を表します。サポートされている各ドライバの例の構成が構成ファイルに含まれているため、構成を変更してストレージの設定や資格情報を反映させることができます。
local
ドライバは、Laravelアプリケーションを実行しているサーバー上にローカルに保存されたファイルとやり取りします。一方、s3
ドライバは、AmazonのS3クラウドストレージサービスに書き込むために使用されます。
お好きなだけディスクを構成でき、同じドライバを使用する複数のディスクを持つこともできます。
ローカルドライバ
local
ドライバを使用すると、すべてのファイル操作は filesystems
構成ファイルで定義された root
ディレクトリを基準とします。デフォルトでは、この値は storage/app
ディレクトリに設定されています。したがって、次のメソッドは storage/app/example.txt
に書き込まれます:
use Illuminate\Support\Facades\Storage;
Storage::disk('local')->put('example.txt', 'Contents');
パブリックディスク
アプリケーションの filesystems
構成ファイルに含まれる public
ディスクは、一般公開されるファイル用です。デフォルトでは、public
ディスクは local
ドライバを使用し、ファイルを storage/app/public
に保存します。
これらのファイルをウェブからアクセス可能にするには、public/storage
から storage/app/public
へのシンボリックリンクを作成する必要があります。このフォルダ構造を利用すると、Envoyer のようなゼロダウンタイムデプロイメントシステムを使用する際に、簡単に共有できる1つのディレクトリに一般公開ファイルを保持できます。
シンボリックリンクを作成するには、storage:link
Artisan コマンドを使用できます:
php artisan storage:link
ファイルが保存され、シンボリックリンクが作成されたら、asset
ヘルパーを使用してファイルへのURLを作成できます:
echo asset('storage/file.txt');
filesystems
構成ファイルで追加のシンボリックリンクを構成できます。構成されたリンクは、storage:link
コマンドを実行すると作成されます:
'links' => [
public_path('storage') => storage_path('app/public'),
public_path('images') => storage_path('app/images'),
],
storage:unlink
コマンドを使用して構成されたシンボリックリンクを破棄できます:
php artisan storage:unlink