HYPの勝手に語ろうか

よく使われているタグ

どうもこんにちは。

今回は、Laravelで特に何もしていないのに画像が表示されなくなった事例がありましたので、その備忘録です。

この「特に何もしていないのに」ってすごいパワーワードだと思ってます。大概は絶対何かしてますからね(笑)

Laravelアプリをサーバー移動した際に発生

そもそもどう言う時に起きたかというと、今までKUSANAGI8のサーバーで作っていたアプリをKUSANAGI9に移動した際に発生しました。

ちなみに最初は移動当初は問題なく画像が表示されていた為、気づいていませんでした。

新しい画像を追加した際に判明

移動当初の画像類は特に問題なく、例えば商品を登録などで新しく画像を追加した際に画像が表示されないというものです。

ちなみに、画像のURLは移動当初の画像URLとなんら変わりなく、storageフォルダにもちゃんと画像が登録されています。そりゃそこらへんの仕組み変えてないんだからそうですよね^^;

画像が表示されない
新しく登録した画像が表示されない。
参照先は間違っていない
リンク先URLも特に間違ってはいない。

色々試してみるも成果なし

キャッシュかとも思ったのですが、試しにプライベートモードなどで見ても特に問題なし。

そもそも、他の画像が問題なく表示されてると言うことはリンク関連が問題ではない?

さらにはローカル環境では全く問題なくて、問題があるのはステージングと本番のみ。やっぱりサーバー移動した際に何かしらの弊害が起きていることは間違いないはず。

少しログを細かく出しても動作に全く問題ありませんでした。

そりゃ表示されてるんだからそうだよね^^;

原因はstorageフォルダのリンクだった!

結論から言うと、storageフォルダの再リンクすることで解決しました。

今までこう言う事例がなかったので正直盲点でした。いらん時間を食いました;w;

よくよくみると、storageフォルダにはちゃんと画像が保存されていますが、publicフォルダのstorageフォルダにはファイルが連動されておりません

storageフォルダ

シンボリックリンクを作り直してみる

まぁされてないなら作り直すかと思い、とりあえず実行。

root@07b77be4cb94:/var/www/html# php artisan storage:link
The [/var/www/html/public/storage] link already exists.
The links have been created.

ん?エラーが出る。既に作成済みの場合はダメなようです。そりゃそうか。

一旦削除してから再作成

既に作成されているpublicフォルダのstorageフォルダを削除します。

root@8c43168102a2:/var/www/html# rm -rf public/storage

その後改めて、シンボリックリンクを再作成します。

root@8c43168102a2:/var/www/html# php artisan storage:link
The [/var/www/html/public/storage] link has been connected to [/var/www/html/storage/app/public].
The links have been created.

無事作成できました。

試しに再度画像登録などを行ってみましたが、問題なくpublicフォルダのstorageとも連動しているようで、画像もちゃんと表示されました!

まとめ

言われてみれば当然な事なのかも知れませんが、全く選択肢に入れてなかったので無駄に時間を食ってしまいました。

常日頃選択肢を広く持っておかないと書けなくていいところで時間がかかってしまいますね^^;

そんなこんなで

シンボリックリンクを使っている人はとりあえず作り直しとけ

って事で、備忘録でした^^

Laravel

TIPS

観光

ハードウェア

生活&ダイエット