当方、Mac環境からwindows環境に移行した際にMacでは表示されていた画像がwindowsでは一切表示されなくなりました。
もちろんフォルダのバックアップを取っていたし、コードもそのままを使用です。
おかしいなと思いつつも色々なパスを書いたが画像は表示されず・・・
<img class="logo" src="storage/profile_images/{{$post->id}}.jpg" alt="logo">
<img class="logo" src="../storage/profile_images/{{$post->id}}.jpg" alt="logo">
<img class="logo" src="../../storage/profile_images/{{$post->id}}.jpg" alt="logo">
#結論
シンボリックリンク行いましたか?
publicディスクは一般公開へのアクセスを許すファイルを意味しています。デフォルトのpublicディスクは、localドライバを使用しており、storage/app/public下に存在しているファイルです。Webからのアクセスを許すには、public/storageからstorage/app/publicへシンボリックリンクを張る必要があります。
Laravel 5.5 ファイルストレージから引用(https://readouble.com/laravel/5.5/ja/filesystem.html)
#シンボリックリンクをやってみよう!
シンボリックリンクは超簡単です。
下記コードをターミナルにて打ち込むだけ
php artisan storage:link
<img class="logo" src="../storage/profile_images/4.jpg" alt="logo">
これで画像が表示されました。
#追記:本番環境で画像がうまく表示されない
AWS EC2本番環境にて問題が起きました。
ローカルの環境では正しく画像が表示されているのに本番環境であるEC2ではうまく表示されません。
php artisan storage:link
はもちろん実行済み
#解決
本番環境でphp artisan storage:link
はを行うとプロジェクト直下に
public/storageファイルが出てきます。
実はこれ、同じプロジェクト直下の/storageと連動していました。
/public/storage/profile_imagesに.jpgを入れたら
/storage/app/public/profile_imagesにも.jpgが反映されます。
片方に.jpgを入れたらもう片方にも自動で反映されるといった具合です。
storageフォルダが2つないとうまく動作しません。