はじめに
今回はロリポップにLaravelアプリを公開したものの、画像が表示されていなかったため、その対応を投稿。
原因
通常Laravelではstorage/app/publicに保存された画像を利用する場合はphp artisan storage:link
など使ってシンボリックリンクを作成して利用する。
しかしロリポップのハイスピードプランではシンボリックリンクが利用できないそう、、。
環境
PHP 8.1.4
Composer 2.3.4
Laravel 8.83.13
レンタルサーバーはロリポップ ハイスピードプラン
シンボリックリンクなしで画像を表示する
1.シンボリックリンクを削除しておく(バックアップ推奨します!)
$ unlink シンボリックリンクへのパス
2.publc以下に任意の名前でフォルダを作成する。
3.storage/app/publicを先ほどのフォルダに移動する
※storage/app/publicのみを移動してその他のsotrage関連のファイルは変わらずstorage/app以下に置いておきます。
4.config/filesystems.phpを編集する
以下のように編集
'public' => [
'driver' => 'local',
// 'root' => storage_path('app/public'),
'root' => public_path('test/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
画像表示部分のパス変更
<img src="{{asset('test/public/〜〜/'. ~~~)}}"
Storageファサード使うとき
Storage::disk('public')->〇〇