前提
ローカル環境では正常に動作していたのですが、サーバーに上げたら、アップロードした画像が表示されなくなりました。原因をご教示頂きたいです…
実現したいこと
現状は、管理画面で画像をstorage/app/public/imagesにアップロードする仕組みになっていて、サーバー上のstorage/app/public/imagesには画像がちゃんとあることを確認できています。
<img src="{{ asset('storage/images/'.$product->image1) }}">
で画像を表示できないです。
ターミナルのssh接続でサーバー上のシンボリックリンクを確認しましたが、The links have been created.と返ってきました。
public/storage/imagesに手動で画像をアップロードすると表示されます。
こちらを管理画面の画像アップロードから表示できるようにしたいのです。
初めてlaravelを本番環境に上げたので、どうしたらいいかわかりません。
ご教示よろしくお願いいたします。
form
1<form method="post" action="{{ route('admin.product.store')}}" enctype="multipart/form-data" autocomplete="off"> 2 {{csrf_field()}} 3 <ul class="input_wrapper"> 4 <li class="image"> 5 <input type="file" name="image1" id="img1" value="{{old('image1'')}}"> 6 </li> 7 </ul> 8</form> 9
controller
1use App\Models\Product; 2 3 public function store(Request $request){ 4 if($request->file('image1')!=null){ 5 $file_name = $request->file('image1')->getClientOriginalName(); 6 $image1 = $file_name; 7 $request->file('image1')->storeAs('public/images' , $image1); 8 }else{ 9 $image1 = null; 10 } 11 Product::create([ 12 'image1' => $image1, 13 ]); 14 return redirect('/admin/product')->with('products', Product::get())->with('message','追加しました'); 15
view
1<img src="{{ asset('storage/images/'.$product->image1) }}">
htaccess
1プロジェクトディレクトリ直下に置いています。 2<IfModule mod_rewrite.c> 3 <IfModule mod_negotiation.c> 4 Options -MultiViews 5 </IfModule> 6 7 RewriteEngine On 8 9 RewriteCond %{REQUEST_FILENAME} -d [OR] 10 RewriteCond %{REQUEST_FILENAME} -f 11 RewriteRule ^ ^$1 [N] 12 13 RewriteCond %{REQUEST_URI} (\.\w+$) [NC] 14 RewriteRule ^(.*)$ public/$1 15 16 RewriteCond %{REQUEST_FILENAME} !-d 17 RewriteCond %{REQUEST_FILENAME} !-f 18 RewriteRule ^ server.php 19 20</IfModule>
回答1件
あなたの回答
tips
プレビュー