web-dev-qa-db-ja.com

Laravelサーバーにアップロードした後、ストレージフォルダーに保存されている画像にアクセスできない

Laravel=プロジェクトで画像をアップロードして取得しようとしています。ローカルサーバーで完全に機能しましたが、ライブサーバーでアップロードした後、機能しません。

Nginxを使用しています。

私が試してみました php artisan storage:linkしかし、それは言う

「public/storage」ディレクトリはすでに存在します

この行を使用して、保存されている画像を新しいページで開きます。

<a href="{{ url('/storage/images/'.$file->file_name) }}" title="">View</a>

表示ボタンの上にマウスを置くと、次のリンクが表示されます:my_ip/storage/images/image.png正しいと思います。

ただし、リンクをクリックするとホームページにリダイレクトされます。

7
Ahsan

hrefは正しいでしょうが、それは問題ではありません。問題は、リンクの場所にファイルが存在することです。あなたが見つけているように、それはそこにはありません。

アップロードするときは、public/storageに実際のディレクトリをアップロードしていないことを確認してください。

ローカルサーバーで、誤ってpublic/storageに実際のディレクトリを作成しましたか?

その場合は、laravel規則がファイルをアプリディレクトリのstorage/app/publicディレクトリに保存することであることを知っておく必要があります。 public/storageフォルダーを自分で作成することはありません。代わりにそこにリンクするシンボリックリンクを作成します。このようにして、storage/app/publicに入力したものも、シンボリックリンクのためにpublic/storageに表示されます。

最初にローカルサーバーが上記の(およびドキュメントで説明されている)laravel規則に従っている)を確認し、サーバーにアップロードした後、storage:linkコマンドを再試行します。 public/storageに実際のディレクトリはもうありませんが、リンクだけがあればうまくいくはずです。

ここで行ったことは、そのディレクトリがすでに存在しているというエラーメッセージを解釈することです。

また、Homesteadを使用している場合は this answer を確認してください。ホストコンピューターにストレージリンクを作成する代わりに、Vagrantにsshして、ここにストレージリンクを作成する必要があります。

9
mwal

サーバーにpublic/storageフォルダーをアップロードしてエラーが発生した場合:「public/storage」ディレクトリはすでに存在します。

ただそれを削除する

rm -R public/storage

そして、コマンドを再度実行します

php artisan storage:link
0
Oliver White