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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

1350閲覧

Herokuでうまく機能が動かない

退会済みユーザー

退会済みユーザー

総合スコア0

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2019/04/10 13:51

編集2019/04/10 13:56

前提・実現したいこと

Laravelのinterventionというライブラリを使用してオリジナルの元号を発表するコラ画像を作るアプリを練習で作っています。
ローカルでのコーディングは終わり、herokuにデプロイしたのですが、うまく合成画像が生成されず下記のようなエラーが返されています。
拙く見にくいコードになっているとは思いますが、よろしくお願いいたします。

実際に動かしているページはこちら(画像作成時にエラーが出ます)↓
http://mygengo.herokuapp.com/myGengoImages

発生している問題・エラーメッセージ

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

該当のソースコード

MyGengoImagesController.php

PHP

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6 7use Intervention\Image\ImageManagerStatic as Image; 8use App\myGengoImage; 9use Carbon\Carbon; 10use App\Http\Requests\CreateMyGengoImageRequest; 11 12class MyGengoImagesController extends Controller 13{ 14 public function index() 15 { 16 $myGengoImages = myGengoImage::latest()->paginate(10); 17 18 return view('mygengo.index',[ 19 'myGengoImages' => $myGengoImages, 20 ]); 21 } 22 23 public function create() 24 { 25 $myGengoImage = new myGengoImage; 26 27 return view('mygengo.create',[ 28 'myGengoImage' => $myGengoImage, 29 ]); 30 } 31 32 public function store(CreateMyGengoImageRequest $request) 33 { 34 $myGengoImage = new myGengoImage; 35 36 $inToImg = $request->text; 37 $createdImg = $this->change_per_strlen($inToImg); 38 39 $filename = \Illuminate\Support\Str::random(40); 40 $createdImg->save(public_path() . '/' . $filename . '.jpg'); 41 42 $myGengoImage->createdImg = '/' . $filename . '.jpg'; 43 $myGengoImage->save(); 44 45 return view('mygengo.complete',[ 46 'myGengoImage' => $myGengoImage, 47 ]); 48 } 49 50 // 文字数を判定し、改行する 51 // 文字数ごとにフォントの大きさを変える 52 // 最大は四文字 53 public function change_per_strlen($inToImg){ 54 $strlen = mb_strlen($inToImg); 55 $backImg = public_path() . '/backimg.jpg'; 56 57 switch($strlen){ 58 case 1: 59 $createdImg = Image::make($backImg)->text($inToImg, 355, 340, function($font) { 60 $font->file(public_path() . '/fonts/hkgokukaikk.ttf'); 61 $font->size(200); 62 $font->align('center'); 63 $font->color('#000000'); 64 $font->angle(7); 65 }); 66 return $createdImg; 67 break; 68 case 2: 69 $strarray = $this->vertical_writing(2,$inToImg); 70 $createdImg = Image::make($backImg)->text($strarray, 360, 400, function($font) { 71 $font->file(public_path() . '/fonts/hkgokukaikk.ttf'); 72 $font->size(130); 73 $font->align('center'); 74 $font->color('#000000'); 75 $font->angle(7); 76 }); 77 break; 78 case 3: 79 $strarray = $this->vertical_writing(3,$inToImg); 80 $createdImg = Image::make($backImg)->text($strarray, 360, 385, function($font) { 81 $font->file(public_path() . '/fonts/hkgokukaikk.ttf'); 82 $font->size(80); 83 $font->align('center'); 84 $font->color('#000000'); 85 $font->angle(7); 86 }); 87 break; 88 case 4: 89 $strarray = $this->vertical_writing(4,$inToImg); 90 $createdImg = Image::make($backImg)->text($strarray, 355, 390, function($font) { 91 $font->file(public_path() . '/fonts/hkgokukaikk.ttf'); 92 $font->size(60); 93 $font->align('center'); 94 $font->color('#000000'); 95 $font->angle(7); 96 }); 97 break; 98 } 99 return $createdImg; 100 } 101 102 public function vertical_writing($strlen,$inToImg,$break=PHP_EOL){ 103 $strarray = []; 104 for($i=0; $i<$strlen; $i++){ 105 $strarray[] = mb_substr($inToImg,$i,1); 106 } 107 return implode($break,$strarray); 108 } 109} 110

index.blade.php

php

1@extends('mygengo.layout') 2 3@section('content') 4 5 <div class="generator"> 6 <h2>新元号を作ってみよう!</h2> 7 <p>フォントの都合で文字が出なかったらごめんね????</p> 8 9 <div class="img"> 10 <img src="/backimg.jpg" alt=""> 11 </div> 12 13 <h3>〈元号を作成〉ボタンを押して作成してみよう!</h3> 14 15 {!! link_to_route('myGengoImages.create','元号を作成') !!} 16 </div> 17 18 <div class="contents"> 19 <h3>最新の10件</h3> 20 21 @if(count($myGengoImages) > 0) 22 <ul> 23 @foreach($myGengoImages as $myGengoImage) 24 <li><img src="{{ $myGengoImage->createdImg }}" alt=""></li> 25 @endforeach 26 </ul> 27 @endif 28 29 <h3>更新すると最新の元号をみることができるよ!</h3> 30 </div> 31 32@endsection

create.blade.php

php

1@extends('mygengo.layout') 2 3@section('content') 4 5 <div class="generator-form"> 6 7 <h2>新元号を作ってみよう!</h2> 8 <p>フォントの都合で文字が出なかったらごめんね????</p> 9 10 <div class="img"> 11 <img src="/backimg.jpg" alt=""> 12 </div> 13 14 {!! Form::model($myGengoImage, ['route' => 'myGengoImages.store']) !!} 15 16 {!! Form::label('text','新しい元号を入力') !!} 17 {!! Form::text('text',null,['placeholder' => '4文字まで記入が可能です(全角のみ)','size' => '22','class' => 'form-input']) !!} 18 19 @if (count($errors) > 0) 20 <div> 21 @foreach ($errors->all() as $error) 22 {{ $error }}<br> 23 @endforeach 24 </div> 25 @endif 26 27 {!! Form::submit('作成',['class' => 'form-button']) !!} 28 29 {!! Form::close() !!} 30 31 </div> 32 33@endsection('content')

complete.blade.php

php

1@extends('mygengo.layout') 2 3@section('content') 4 5 <div class="complete"> 6 <h2>新元号を作ってみよう!</h2> 7 <p>フォントの都合で文字が出なかったらごめんね????</p> 8 9 <div class="img"> 10 <img src="{{ $myGengoImage->createdImg }}" alt=""> 11 </div> 12 <p>オリジナルの元号ができました!</p> 13 14 {!! link_to_route('myGengoImages.index','トップに戻る') !!} 15 16 </div> 17 18@endsection

web.php

php

1Route::get('/', 'MyGengoImagesController@index'); 2Route::resource('myGengoImages', 'MyGengoImagesController');

試したこと

最初にトップページの画像が表示されなかったので、いろいろな方に聞いた結果、public直下で画像を表示するようにアドバイスをいただいたので(作った画像はだれでも見れるような仕様です)、同じように生成された画像はpublic直下で保存されるようにしています。

データベースの保存にもpublicの直下にパスが通るようにcontroller内で書いています。なお、ローカルではうまく動きました。

githubに最新のものを載せてます。
https://github.com/orangefarmar/mygengo

実際に動いた時の動き方を載せてる動画がありますのでこちらをご覧ください。
https://twitter.com/jdkfx/status/1114191349501194240

補足情報(FW/ツールのバージョンなど)

Laravel Framework 5.5.45
AWS cloud9を使用

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

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

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

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

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

guest

回答1

0

ベストアンサー

メンターさんに教えていただきながらS3を使って画像を保存するやり方に切り替えました。
参考:
https://qiita.com/fakefurcoronet/items/fe2861ca2846b7347418
https://qiita.com/nobu0717/items/51dfcecda90d3c5958b8
https://blog.hiroyuki90.com/articles/laravel-s3-image-upload-show-delete/

投稿2019/04/10 15:18

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問