Laravelのstorage/app/publicの場所を変更する

通常Laravelではstorage/app/publicに保存された画像などを利用する場合はシンボリックリンクを作成して利用しますが、シンボリックリンクを作成せずにstorage/app/publicを使用する方法を紹介します。

storage/app/publicを移動する理由

セキュリティ上の理由等でシンボリックリンクが使用できないサーバーでの対処方法を紹介します。

ロリポップのハイスピードプランではシンボリックリンクが利用出来ないため、スタンダードプラン等からハイスピードプランへの変更時は特に注意が必要で、契約更新されプランが切り替わった瞬間に今まで表示できていた画像が表示されない問題が発生します。
ロリポップサーバーでLaravel運用する場合はプランに関わらず「storage/app/public」を移動しておくことをおすすめします。

※storage/app/publicのみを移動してその他のstorage関連のファイルは通常通りstorage/app/以下に保存します。

移動方法と利用方法

ドキュメントルート(public/)下にstorage/app/publicを移動したいフォルダを作成します。
今回は「public/storage」としました。

「config/filesystems.php」に以下を追記または修正します。

return [
    'disks' => [
        'public' => [
            'driver' => 'local',
            'root' => public_path('storage'),
            'url' => env('APP_URL') . '/storage',
            'visibility' => 'public',
        ],
    ],
];

使用する場合

$url = Storage::disk('public')->url('file.jpg');

保存する場合

Storage::disk('public')->put('file.jpg', $fileContents);

コメント

タイトルとURLをコピーしました