LoginSignup
7
3

More than 3 years have passed since last update.

Laravel シンボリックリンクが切れた時の復旧方法

Posted at

Laravel のStorage を使っていて、シンボリックリンクが切れてファイルの読み込みができなくなる時があります。

その時の復旧方法を備忘録的に残します。

シンボリックリンクの設定

php artisan storage:link

これでシンボリックリンクの設定ができます。

Storage フォルダがroot直下にでき、/public 直下からリンクが張られます。

それでうまくいっていたはずが、色々やるうちに変わったり外れてしまった場合の対処法です。

シンボリックリンクの確認

ローカルの場合、仮想環境のサーバにログインします。

プロジェクトのフォルダまで移動し、ls -la でシンボリックリンクを確認します。

vagrant@homestead:~/code/project$ cd public
vagrant@homestead:~/code/project/public$ ls -la
total 24
drwxr-xr-x 1 vagrant vagrant  384 Jul  4 02:52 .
drwxr-xr-x 1 vagrant vagrant  960 Jun 28 07:37 ..
drwxr-xr-x 1 vagrant vagrant   96 Jun 16 11:26 css
-rw-r--r-- 1 vagrant vagrant 6148 May 15 06:23 .DS_Store
-rw-r--r-- 1 vagrant vagrant    0 Apr 10 07:56 favicon.ico
-rw-r--r-- 1 vagrant vagrant  603 Apr 10 07:56 .htaccess
-rw-r--r-- 1 vagrant vagrant 1823 Apr 10 07:56 index.php
drwxr-xr-x 1 vagrant vagrant   96 Jun 16 11:26 js
-rw-r--r-- 1 vagrant vagrant   71 Jun 28 07:38 mix-manifest.json
-rw-r--r-- 1 vagrant vagrant   24 Apr 10 07:56 robots.txt
lrwxr-xr-x 1 vagrant vagrant   45 Jul  4 02:52 storage -> /User/hogehoge/code/project/storage/app/public/
drwxr-xr-x 1 vagrant vagrant  128 May 15 08:02 voice

仮想環境なのに /User/hogehoge/code/project/storage/app/public/ みたいなパスになっていたら間違いです。

シンボリックリンクを削除する

リンクが間違っていたら、unlink でリンクを削除します。

vagrant@homestead:~/code/project/public$ unlink storage

正しいパスでシンボリックリンクを設定する

シンボリックリンクの設定は ln -s [正しいパス] [storage] です。

正しいパスは、$pwd でプロジェクトrootのパスを確認し、/project/storage/app/public/ を設定。

vagrant@homestead:~/code/project/public$ ln -s /home/vagrant/code/project/storage/app/public/ storage

ついでに: 本番環境でシンボリックリンクが繋がらないとき

単純に繋がっていないだけのことが多いので、サーバにログインして、storage:link しましょう。

php artisan storage:link

参考

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