質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

4570閲覧

laravelでの画像表示について

774

総合スコア79

さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2019/04/15 14:52

現在Laravelで独自サイトを製作中なのですが、localで表示されていた画像ファイルが本番環境で動作されない不具合が起きました。
以下が該当するviewとコントローラのコードになります。

single.blaade.php

1<h2>タイトル: {{$post -> title}} 2 <small>投稿日:{{ date("Y年 m月 d日",strtotime($post->created_at)) }}</small> 3</h2> 4 5<img class="logo" src="{{ asset($post -> image) }}" alt="logo"> 6 7<h5>カテゴリー:{{ $post->cat_name }}</h5> 8<h5>{{ $post->content }}</h5>

PostsController

1$post = \DB::table('posts') ->select('posts.id as post_id', 'posts.title as title','posts.content','posts.image','posts.created_at','categories.name as cat_name' ) -> where('posts.id', $id) -> leftjoin('categories', 'posts.cat_id', '=', 'categories.id') ->get() ->first();

また、画像を挿入する側のコードは以下のようになります。

create.blade.php

1 <div class="form-group"> 2 <label for="image" class="">添付ファイル</label> 3 <div class=""> 4 {{ Form::file('image', null) }} 5 </div> 6 </div>

PostsController

1 public function store(Request $request) 2 { 3 $params = $request->validate([ 4 'title' => 'required|max:50', 5 'content' => 'required|max:200', 6 'cat_id' => 'required', 7 'image' => 'required|file|image|max:4000', 8 ]); 9 10 $file = $params['image']; 11 12 $image = \Image::make(file_get_contents($file->getRealPath())); 13 $image 14 ->save(public_path().'/images/'.$file->hashName()); 15 16 $ext = $file->getClientOriginalExtension(); 17 18 if($ext == 'jpg' or $ext == 'jpeg') { 19 imagejpeg(imagecreatefromjpeg($file),public_path().'/images/'.'compre'.$file->hashName()); 20 } elseif($ext == 'png') { 21 imagepng(imagecreatefrompng($file),public_path().'/images/'.'comore'.$file->hashName()); 22 } 23 $params['image'] = '/images/'.$file->hashName(); 24 25 26 \DB::table('posts')->insert($params); 27 28 return redirect()->route('bbc.index'); 29 }

これらのコードをさくらレンタルサーバーにデプロイしたうえで表示をさせましたが、特にエラーが吐かれる様子もなく、画像の表示が行えません。
どなたか解決策が分かる方がいらっしゃいましたら、ご教授をお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/04/15 15:05

Webブラウザで、404 になっていたりしないでしょうか?
774

2019/04/15 15:26

はい、なっておりません。 検証メニューも開いてみたのですが、コンソールには何も出力されていなかったです。
tukatter

2019/04/16 05:16

<img class="logo" src="{{ asset($post -> image) }}" alt="logo"> ここでいう $post -> image はブラウザの検証などで要素を表示した URLのパスが画像格納場所と一致しているのでしょうか。 publicフォルダの指定の場所に画像が存在するか、権限読み込めるか 画像URLをたたいて画像のみを表示してみるなどでどうでしょうか。
774

2019/04/16 09:51

回答ありがとうございます! 今しがたURLを叩いてみたところ画像は表示されていました。 ただ、何故か画像のURLがダブルクォーテション二つで囲まれているみたいです。
guest

回答1

0

自己解決

解決いたしました!
どうやらhtmlをサーバー側に置き換えた際にviewのダブルクォーテーションが二つにエスケープされているのに気付かなかったことが原因みたいです。

投稿2019/04/16 09:58

774

総合スコア79

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tukatter

2019/04/17 00:09

とりあえず、よかったですね。 ソースの表示でどのようなタグと要素が設定されているかみておくといいです。
774

2019/04/17 00:24

ですねですね、ありがとです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問