シンボリックリンクとは?
シンボリックリンク(symbolic link, symlink)は 「ファイルやフォルダへのショートカット」 のようなものです。
実体(本物のファイルやフォルダ)とは別に、「ここにその実体があるよ」と示す案内板を作るイメージです。
実体(オリジナル):本物のファイルやフォルダ
シンボリックリンク:実体への「案内板」
リンクを開けば、あたかもそこに本物があるかのように見えます。
たとえ話でイメージ
🏠 家とポストのたとえ
あなたの家(=本物のファイル)が「東京都新宿区○○」にあるとします。
でも、友達は「渋谷区」にしか来られない。
そこで、渋谷区の道端に「新宿区○○はこちら →」という 案内板(シンボリックリンク) を立てます。
友達がその案内板をたどれば、結局は新宿の本物の家にたどり着けるわけです。
📂 書類棚とインデックスのたとえ
会社に巨大な書類棚があって、重要な契約書が「5階・右奥・棚の3段目」にあります。
でも毎回そこに取りに行くのは面倒。
そこで机の引き出しに「契約書 → 棚の場所」という インデックスカード(シンボリックリンク) を置いておく。
カードを見れば、本物の契約書にすぐアクセスできるのです。
シンボリックリンクの特徴
実体が消えると困る
案内板だけ残っても、本物がなければ「行き先がありません」となる。
実体と同じように扱える
リンクを開くと、本物のファイルと同じように読んだり編集したりできる。
複数作れる
一つの実体に対して、いくつでも案内板を設置できる。
実用例
- 長いパスにあるフォルダを、すぐアクセスできる場所にリンクを作る
- 同じファイルを複数の場所から参照したいときに使う
- システム設定ファイルを、共通の1つを参照させたいときに使う
💡まとめると:
「シンボリックリンクは、本物のファイルやフォルダへ案内する“ショートカット”のような存在」
です。
Laravelのシンボリックリンクの設定
php artisan storage:link
実際の確認
ls -l /var/www/local-mojiokoshi/public | grep storage
結果例:
user@DESK-F-X-001:/var/www/local-mojiokoshi$ ls -l /var/www/local-mojiokoshi/public | grep storage
lrwxrwxrwx 1 user user 44 9月 11 11:23 storage -> /var/www/local-mojiokoshi/storage/app/public
user@DESK-F-X-001:/var/www/local-mojiokoshi$
- URL でアクセス
これで storage/app/public にあるファイルは
http://your-domain/storage/xxxxxx.wav
のように参照できます。
まとめ
Laravel で storage/app/public を公開ディレクトリ public/storage にリンクさせる手順をまとめます。
Laravel シンボリックリンク設定手順まとめ
1. 公開したいディレクトリを確認
Laravel が public/storage から参照できるようにしたいのは以下:
/var/www/local-mojiokoshi/storage/app/public
ここに音声ファイルなどを保存すると、
http://your-domain/storage/... でアクセス可能になります。
2. Artisan コマンドでリンク作成
プロジェクトのルートで以下を実行:
php artisan storage:link
成功すると:
The [public/storage] directory has been linked.
と表示されます。
3. リンクが正しく作成されたか確認
次のコマンドで確認します:
ls -l /var/www/local-mojiokoshi/public | grep storage
出力例:
lrwxrwxrwx 1 user user 44 9月 11 11:23 storage -> /var/www/local-mojiokoshi/storage/app/public
✅ lrwxrwxrwx で始まっていればシンボリックリンクができています。
- アクセス確認
保存済みファイルがある場合:
/var/www/local-mojiokoshi/storage/app/public/processed/test.wav
なら、ブラウザからは:
で参照できます。
5. トラブルシューティング
既に public/storage ディレクトリが存在している場合
→ 一旦削除してから再リンクする:
rm -rf public/storage
php artisan storage:link
パーミッションエラーが出る場合
→ storage ディレクトリに適切な権限を付与:
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
👉 これで storage/app/public 以下のファイルがブラウザ経由で安全に公開できます。