LaravelをAWSのEC2へデプロイする手順を参考にさせていただき、EC2の中に作成中のLaravelアプリケーションをデプロイしました。
ローカル環境上では、プロフィール画像を指定しなければ、デフォルトの画像が割り当てられるように、storageに対してシンボリックリンクを貼ることにより、デフォルトの画像を表示することができました。
EC2にデプロイした後に、同じような形でデフォルト画像を表示したいのですが、表示されませんでした。
一度、public/storageを削除し、php artisan storage:link として、再度シンボリックリンクを貼ってもうまくいきませんでした。
他に、該当する箇所等ありますでしょうか??
laravelのバージョンは、下記になります。
Laravel Framework 5.8.37
画像表示部分のコードはこちらになります。
@auth <!-- プロフィール画像が無かったら、デフォルトの画像を設定する --> @if($user->profile_image == null) <img src="/storage/noimage.png" style="width:50px; height:50px; border-radius:50%; position:relative; top: 79px; left: 35px;"> @else <img src="{{ $user->profile_image }}" style="width:50px; height:50px; border-radius:50%; position:relative; top: 79px; left: 35px;"> @endif
コントローラーのコードは、こちらになります。
<?php namespace App\Http\Controllers; use App\Post; use Storage; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class PostsController extends Controller { public function index() { //ログインしているユーザー情報を取得 $user = Auth::user(); $posts = Post::all(); return view('posts.index',['posts' => $posts,'user'=>$user]); } public function store(Request $request) { $request->validate([ 'text' => 'required', ]); // モデルからインスタンスを生成 $post = new Post; // postsテーブルのtextに、フォームから送られたtextを保存する $post->text = $request->text; // userテーブルのidを、postsテーブルのuser_idとして保存する $post->user_id = $request->user()->id; // フォームリクエストの中に、画像ファイルが含まれているかどうかを条件分岐 if($request->hasFile('image')){ //s3アップロード開始 $image = $request->file('image'); // バケットの`test`フォルダへアップロード $path = Storage::disk('s3')->putFile('test', $image, 'public'); // アップロードした画像のフルパスを取得 $post->image_path = Storage::disk('s3')->url($path); } // 保存 $post->save(); // 保存後 一覧ページへリダイレクト return redirect('/'); } public function update(Request $request, $id) { // idを元にレコードを検索して$postに代入 $post = Post::find($id); // editで編集されたデータを$postにそれぞれ代入する $post->text = $request->text; // 保存 $post->save(); // 一覧ページへリダイレクト return redirect('/'); } public function destroy($id) { // idを元にレコードを検索 $post = Post::find($id); // 削除 $post->delete(); // 一覧にリダイレクト return redirect('/'); } }
回答1件
あなたの回答
tips
プレビュー