18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

laravelでパスが合っているのに画像が表示されない(シンボリックリンク)

Last updated at Posted at 2020-02-09

当方、Mac環境からwindows環境に移行した際にMacでは表示されていた画像がwindowsでは一切表示されなくなりました。
もちろんフォルダのバックアップを取っていたし、コードもそのままを使用です。

おかしいなと思いつつも色々なパスを書いたが画像は表示されず・・・

blade.php
<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">

ページで確認しても、もちろん404エラーです。
画像.png

#結論
シンボリックリンク行いましたか?

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
blade.php
<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つないとうまく動作しません。

18
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?