0
0

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 1 year has passed since last update.

Laravel sail のシンボリックリンクで詰まった話

Posted at

はじめに

Laravel sail を使い開発をおこなっていて、画像を登録する機能の実装をしていたところ。

画像の保存ができているのに、表示ができない???

と少しはまってしまいましたので解決方法を共有いたします。

確認したこと

まず確認することはファイルパスが間違っていないか。

ファイルパスを確認したところ

画像path
/storage/uploads/hogehoge.png

正しく保存ができていました。
念の為シンボリックリンクの再作成を行いました。

laravel
rm public/storage
php artisan storage:link

ls -l public

次にシンボリックリンクの確認をしましょう。

シンボリックリンクの確認のためにLaravel/Public配下を確認したところ
Storage/uploadsもしっかりと存在していた。

問題があった箇所

Laravel Sailの使用

Laravel Sailを使用している場合、ホストマシンとDockerコンテナの間で適切にポートがマッピングされていることを確認してください。また、Dockerコンテナ内でシンボリックリンクが正しく作成されていることも確認してください。

との記事を発見し、確認してみました

laravel
./vendor/bin/sail bash
Docker
ls -la public

を実行し確認します。
すると

Docker
lrwxr-xr-x  1 sail dialout   63 Aug 13 17:31 storage -> /Users/hoge/project/Laravel/storage/app/public

となっていました!!

解決策

以下のコードで既存のシンボリックリンクを削除し、
新しくシンボリックリンクを作成してあげれば

Docker
rm public/storage  # 既存のシンボリックリンクを削除
ln -s ../storage/app/public public/storage  # 新しいシンボリックリンクを作成
Docker
lrwxr-xr-x  1 sail dialout   21 Aug 22 04:08 storage -> ../storage/app/public

と正しいシンボリックリンクを作成できました!!

開発環境での動作確認もしっかりと画像が表示されました!

最後に

Dockerコンテナ内からホストマシンのファイルシステムへのシンボリックリンクは、コンテナ内で正しく機能しない場合があります。特に、Docker for Macではこのような問題がよく発生します。

という文献も見つけました。
みなさんもMacで開発していてはまった時一度確認してみてください!

さぁ!今日も元気にコード書いてこ:v_tone1:

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?