6
4

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.

heroku laravel 画像が表示されない

Last updated at Posted at 2021-11-04

この記事ではheroku上でのシンボリックリンク設定方法についてご紹介していきます。

##起きたこと
localでは正常に画像が表示されていたのですが、herokuにデプロイした途端、急にheroku上でのみ画像が表示されなくなってしまいました。

スクリーンショット 2021-11-03 22.11.46.png

それも、エラーが一切出なく、登録機能も正常に動作するので原因が全く分からないのです。。
数日悩んだ末、色々検索していた際に「シンボリックリンクの設定」について書かれている記事に辿り着きました!
https://qiita.com/en_tokiya/items/5afab752c5826e4dcc62

local環境で動作させていた時にシンボリックリンクは設定していたのですが、どうやら本番環境にそのまま反映されるわけではないようで、デプロイ後に再設定が必要とのことでした。

シンボリックリンクを本番環境用に設定して無事画像の表示がされるようになったので、同じ事象で悩まれてる方は是非参考にしてみてください!

##シンボリックリンク設定
設定は簡単です!
先ほど紹介させてもらった記事にも設定手順が記載されていますが、改めてこちらの記事でも説明しておきたいと思います。
※なお、設定前に確認しておく事項があるのでそちらについてはご紹介した記事をご覧ください。
https://qiita.com/en_tokiya/items/5afab752c5826e4dcc62

設定は下記の手順でコマンドを実行していきます!

// /app、/database、/routesなどが配置されてるアプリディレクトリで実行
$ heroku run bash //heroku上でコマンド操作できるようにする

これでheroku上のディレクトリでコマンド操作できるようになりました。
次に現在設定されているシンボリックリンクを削除します。

~ $ cd public // /publicに移動
~/public $ rm storage //現在のstorageファイルを削除
~/public $ ls -l //storageが削除されたことを確認
total 24
drwx------ 2 u31878 dyno 4096 Nov  4 03:09 css
-rw------- 1 u31878 dyno    0 Nov  4 03:09 favicon.ico
-rw------- 1 u31878 dyno 1735 Nov  4 03:09 index.php
drwx------ 2 u31878 dyno 4096 Nov  4 03:09 js
-rw------- 1 u31878 dyno   71 Nov  4 03:09 mix-manifest.json
-rw------- 1 u31878 dyno   24 Nov  4 03:09 robots.txt
-rw------- 1 u31878 dyno 1183 Nov  4 03:09 web.config

これで誤って設定されていたシンボリックリンクが削除されました。
次は正しいシンボリックリンクを設定していきます。

~/public $ cd //アプリディレクトリに移動
~ $ php artisan storage:link //シンボリックリンク作成
The [/app/public/storage] link has been connected to [/app/storage/app/public].
The links have been created.

これでシンボリックリンクが新しく作成されましたね!
下記コマンドでstorageが再作成できたか確認します。

~ $ cd public // /publicに移動
~/public $ ls -l //storageが作成されたか確認
lrwxrwxrwx 1 u31878 dyno   23 Nov  4 13:51 storage -> /app/storage/app/public //作成されてますね!
~/public $ 

これでheroku上でのシンボリックリンクが無事作成されました!
次にローカルのディレクトリで設定していきます。

//ローカルのアプリディレクトリで実行
$ cd public
$ rm storage //現在のシンボリックリンクを削除
$ ln -s /app/storage/app/public storage

これで再設定できました!
設定コマンドは下記のような記述になっています。

$ ln -s リンク元 登録名

再度storageが作成されてることも確認できました!

% ls -l
lrwxr-xr-x ... storage -> /app/storage/app/public

では、最後に変更点をコミットしてherokuにデプロイしましょう!

$ git add storage
$ git commit -m 'コミットメッセージ'
$ git push heroku main

これで再度ブラウザで確認すると画像が表示されていることが分かるかと思います!!
初学者にとってエラーの出ない問題は辛いですよね。。
何がダメなのかが全く検討つかないので。
今回は無事解決できましたので、少しでも同じ事象で悩まれてる方の参考になれば嬉しいです!

6
4
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
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?