SSHできないサーバでLaravel用のシンボリックリンクを作成する
Laravel8で画像のアップロード機能を作っています
Laravelでは、ユーザがアップロードした画像はStorageフォルダに格納されますが、Storage/app/publicディレクトリにある画像にユーザがアクセスするにはpublicディレクトリにシンボリックを貼る必要があります
シンボリックリンクを貼りたい場所

| - app
| - config
| - database
| - public
| - storage ← ここにシンボリックリンクを貼って、image.jpgが見れるようにしたい
| - resources
| - routes
| - storage
| - app
| - public
| - image.jpg ← ユーザがアップロードした画像
| - vendor
上のシンボリックリンクを貼ることで、ユーザは、
http://hoge/storage/image.jpg
というURLで、アップロードした画像を見ることができるようになります
まあ、普通はHTMLのIMGタグなんかで表示しますけどね
<div>
<img src='http://hoge/storage/image.jpg'>
</div>
シンボリックリンクをはる
Laravelでシンボリックリンクを貼るコマンド
> php artisan storage:link
The [/Applications/hoge/public/storage] link has been connected to [/Applications/hoge/storage/app/public].
The links have been created.
Laravelでは、このシンボリックリンクを貼るためのコマンドがあります
が、僕が利用してるスターサーバーみたいなレンタルサーバーの場合、SSHが利用できないのでサーバ側でシンボリックリンクを貼ることができません
そこで、PHPのsymlinkコマンドを使います
PHPでシンボリックリンクを貼る
symlink('シンボリックリンクのリンク元', 'シンボリックリンクを貼るパス');
こんな感じで、PHPメソッドを実行することでSSHからコマンドを叩くことなくシンボリックリンクを作成することができます。
symlink(storage_path() . '/app/public', public_path() . '/storage');
僕は適当なコントローラーを使って、こんな感じでsymlinkを実行しました。
もちろんコントローラーのある場所とリンクを貼りたいディレクトリは異なるので、相対パスで指定してます
第一引数の「storage_path() . '/app/public’」、
第二引数の「public_path() . '/storage’」、はそれぞれ以下に当たります
| - app
| - config
| - database
| - public
| - storage ← 第二引数の「public_path() . '/storage'」はここに該当
| - resources
| - routes
| - storage
| - app
| - public
| - image.jpg ← 第一引数の「storage_path() . '/app/public'」はここに該当
| - vendor
ディスカッション
コメント一覧
まだ、コメントがありません
よくLoadingされてるDocs
新たにPostされたDocs
: ウェブサービス
メルカリやラクマの商品がいつ出品されたのかを調べる裏技
メルカリやラクマなどで商品を探してると、ときどき、 「この商品はいつ出品されたも ...: 仕事環境
15年前のエアコンに洗浄スプレーしたら想像以上にキレイになった
うちのエアコンは新品で購入してからすでに15年が経過しています にもかかわらず、 ...: Laravel
一定時間で消えるフラッシュメッセージを簡単に実装[Laravel8]
以前、手軽にフラッシュメッセージが実装できるnotieを紹介しました 今回は、そ ...: Laravel
ランダムな文字列やユニークなIDをLaravelで生成
random use Illuminate\Support\Str; // 引数 ...: スマホ
4,837円あげるって言うからOCNモバイルOneにLinksmateから乗り換えたんですよ
これまでは僕はスマホの通信会社に、MVNOのLinksmateを使ってきました ...HashMap
created_by
はやぴ
Web/アプリ開発エンジニア
Sierにてお堅いB向けのソフトウェア開発を経て、現在はC向けのWebやアプリを中心に開発しています。
Utilities