質問: 現在、laravelフレームワークでユーザーから投稿されたファイルをサーバーにアップロードするシステムについて勉強中です。 laravelのバージョンは5.5を使用しています。 laravel5.3以降から、デフォルトで、アップロードされたファイルはstorage/app/publicディレクトリに保存され、 シンボリックリンクを張ることで外部から閲覧ができるように変更されたようですが、 この変更の利点がわかりません。 publicディレクトリ(公開ディレクトリ)以下にファイルを保存することと比べて、どんなメリットがあるのでしょうか? 細かいことが気になってしまう性格なので、変更された意図を考えずに勉強を進めることができないため、質問させていただきました。 ご回答よろしくお願い致します。 <ディレクトリ構成> application/ ├ app/ ├ bootstrap/ ├ config/ ├ database/ ├ public/ ←公開ディレクトリ ├ resource/ ├ route/ ├ storage/ │ └ app/ │ └ public/ ←ファイルが保存される場所(シンボリックリンクによって公開される) └ vender/
回答: 情報の認識として、filesystems.phpのlocal設定と対になり、Larvelで保存するファイルはstorage/appに格納され、そのうち公開するものはstorage/app/publicに格納され、必要に応じてWebサーバーのドキュメントルート等に配置というのは一貫性がありわかりやすい気がします。 直接publicフォルダに配置したい場合は、publicのroot設定を調整すればよいです。 ``` 'root' => pubic_path('public'), ``` メリットを強いて言うと、Laravel Mixコマンドのビルド処理と合わせてpublicフォルダは基本的に人間が触らないディレクトリとできることや、 NFS等で別のサーバーのディスクをマウントして利用などがあるかと思います。