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

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

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

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

Q&A

解決済

2回答

569閲覧

Apache Laravel vhosts 設定

FigHy

総合スコア19

Laravel

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

0グッド

0クリップ

投稿2018/05/05 15:58

編集2018/05/06 12:24

LaravelプロジェクトのTOP画面を表示させたい

質問失礼いたします。
EIPアドレスでlaravelプロジェクトのTOP画面を表示させたいのですが、HTTP500エラーになってしまいます。
だいぶハマっているので、ぜひお力添えいただければと・・・

###環境

  • Mac
  • AWS EC2

下記をEC2にインストール

  • PHP 7.1.15
  • Laravel 5.6.17
  • Apache 2.4
  • mysql
  • git

###やったこと

  • /etc/httpd/conf.d/vhosts.confに下記の記述(ドメイン名はまだ取得していないため、今後設定予定の仮の名前にしている)
<VirtualHost *:80> DocumentRoot "/var/www/html/laravelApp/public" ServerName www.laravelApp.jp:80 ServerAdmin hoge@hoge.com <Directory "/var/www/html/laravelApp/public"> AllowOverride All Options All Require all granted </Directory> </VirtualHost>
  • /etc/hostsにサーバーネームの記述
138.111.111.111 www.laravelApp.jp:80

どこか記述が間違っているのか、苦戦しています。
パーミッションなどは、記事を参考に通しているはずだと思うのですが。。。
HTTP500のエラーが出ています。
apacheのエラーログを見ましたが、

PHP Fatal error: Uncaught Error: Call to undefined method Symfony\Component\Debug\Exception\FatalErrorException::getStatusCode() in /var/www/html/matching/app/Exceptions/Handler.php:57\nStack trace:\n#0 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(112)~

と、長いログで全くわからず・・・・

足りない情報あればすぐに記載します、大変申し訳ありませんが、何卒宜しくお願い致します。

Laravel.logファイルのエラー内容

[2018-05-06 02:04:23] production.ERROR: Uncaught Error: Call to undefined method Symfony\Component\Debug\Exception\FatalThrowableError::getStatusCode() in /var/www/html/matching/app/Exceptions/Handler.php:57 Stack trace: #0 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(112): App\Exceptions\Handler->render(Object(Illuminate\Http\Request), Object(Symfony\Component\Debug\Exception\FatalThrowableError)) #1 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(89): Illuminate\Foundation\Bootstrap\HandleExceptions->renderHttpResponse(Object(Symfony\Component\Debug\Exception\FatalThrowableError)) #2 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleException(Object(Symfony\Component\Debug\Exception\FatalThrowableError)) #3 {main} thrown {"exception":"[object] (Symfony\Component\Debug\Exception\FatalErrorException(code: 1): Uncaught Error: Call to undefined method Symfony\Component\Debug\Exception\FatalThrowableError::getStatusCode() in /var/www/html/matching/app/Exceptions/Handler.php:57 Stack trace: #0 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(112): App\Exceptions\Handler->render(Object(Illuminate\Http\Request), Object(Symfony\Component\Debug\Exception\FatalThrowableError)) #1 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(89): Illuminate\Foundation\Bootstrap\HandleExceptions->renderHttpResponse(Object(Symfony\Component\Debug\Exception\FatalThrowableError)) #2 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleException(Object(Symfony\Component\Debug\Exception\FatalThrowableError)) #3 {main} thrown at /var/www/html/matching/app/Exceptions/Handler.php:57) [stacktrace] #0 {main}

Handler.php

1<?php 2 3namespace App\Exceptions; 4 5use Exception; 6use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; 7use Illuminate\Session\TokenMismatchException; 8use Illuminate\Validation\ValidationException; 9 10class Handler extends ExceptionHandler 11{ 12 /** 13 * A list of the exception types that are not reported. 14 * 15 * @var array 16 */ 17 protected $dontReport = [ 18 // 19 ]; 20 21 /** 22 * A list of the inputs that are never flashed for validation exceptions. 23 * 24 * @var array 25 */ 26 protected $dontFlash = [ 27 'password', 28 'password_confirmation', 29 ]; 30 31 /** 32 * Report or log an exception. 33 * 34 * @param \Exception $exception 35 * @return void 36 */ 37 public function report(Exception $exception) 38 { 39 parent::report($exception); 40 } 41 42 /** 43 * Render an exception into an HTTP response. 44 * 45 * @param \Illuminate\Http\Request $request 46 * @param \Exception $exception 47 * @return \Illuminate\Http\Response 48 */ 49 public function render($request, Exception $exception) 50 { 51 if ($exception instanceof TokenMismatchException) { 52 return redirect()->back()->with('message','セッションのタイムアウトとなりました。もう一>度入力してください。'); 53 } 54 if (get_class($exception) == "ErrorException" || $exception instanceof ValidationException) { 55 return parent::render($request, $exception); 56 } 57 $status = $exception->getStatusCode(); 58 return response()->view("errors.common", ['exception' => $exception], $status, $exception->getHeaders()); 59 } 60}

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/05/05 23:58

3セグまでしかないIPなんて存在しませんが。。。
FigHy

2018/05/06 00:25

すみません、IPアドレスは適当に入力しました。
FigHy

2018/05/06 02:06

laravelの設定なのかphpなのか・・・インストールはできているのですが;うまくpublicでlaravelが起動してないっぽいです。
Lulucom

2018/05/06 02:09

/var/www/html/laravelApp/storage/logs/ディレクトリにlaravelのログファイルはないでしょうか。もしあれば、そこに出力されたエラーメッセージを記載されると良いかと思います。
FigHy

2018/05/06 02:11

確認したところ、logsのディレクトリにlaravelのlogファイルありませんでした;
Lulucom

2018/05/06 02:14 編集

動かそうとしているのは `/var/www/html/laravelApp/` かと思うのですが、現在記載されているエラーメッセージでは `/var/www/html/matching/` となっていますので、別アプリのエラーメッセージではないでしょうか。
FigHy

2018/05/06 02:17

あ、すみませんわかりやすくlaravelAppに質問の際に書き換えただけです;同じプロジェクトをさしております。混乱させてしまい本当に申し訳ありません。Laravelのlogファイルを作成しようと思っているのですが、logディレクトリにlaravel.logとファイルを作るだけでいいのでしょうか?;
FigHy

2018/05/06 02:19

すいません、logファイルありました。
FigHy

2018/05/06 02:21 編集

laravel.logファイルの内容を追記しました。見ていただけると幸いです。
Lulucom

2018/05/06 02:34

おそらく`/var/www/html/matching/app/Exceptions/Handler.php`をカスタマイズされているのかと思いますが掲載できますでしょうか。
退会済みユーザー

退会済みユーザー

2018/05/06 02:36

Debug ツールで例外がでてるけど composer アップデートじゃなく アップロードしてアップロードの除外で完全じゃないんじゃないの?
FigHy

2018/05/06 03:03 編集

お返事ありがとうございます。ただ今、急用で出先のため夜改めて記載させていただきます!お時間ございましたら、改めてよろしくお願い致します。
FigHy

2018/05/06 12:25

遅くなりましたが、Handler.phpを掲載しました。ご確認いただければ幸いです。
FigHy

2018/05/06 12:26

確かにこちらのファイルを、何かの記事を参考に追記しました。
guest

回答2

0

ベストアンサー

php

1$status = $exception->getStatusCode(); 2return response()->view("errors.common", ['exception' => $exception], $status, $exception->getHeaders());

上のコードは、例外が HttpException の派生であることを前提にしているようですが、今回発生している例外が HttpException の派生ではないため、getStatusCode() メソッドが無いというエラーが出ているのだと思います。

render メソッドの最初の方で既にやられているように、例外の型を適切に判別して処理する必要がありそうです。

(追記)
render メソッドの最後(57行目以降)を以下のようにすれば、今回の元々の例外も表示されて、原因がわかるのではないでしょうか。また、HttpException もスーパークラスが適切に処理してくれると思います。

return parent::render($request, $exception);

投稿2018/05/06 12:44

編集2018/05/06 12:58
Lulucom

総合スコア1899

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

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

FigHy

2018/05/06 13:16

ありがとうございます。HTTP500のエラーは解除できました! 逆にこんなエラーになりました; .envにアプリケーションキーの設定をしているのですが、なぜでしょうか。 ``` [2018-05-06 13:08:31] production.ERROR: No application encryption key has been specified. {"exception":"[object] (RuntimeException(code: 0): No application encryption key has been specified. at /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php:42) [stacktrace] #0 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Support/helpers.php(1043): Illuminate\Encryption\EncryptionServiceProvider->Illuminate\Encryption\{closure}(NULL) #1 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php(46): tap(NULL, Object(Closure)) #2 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php(24): Illuminate\Encryption\EncryptionServiceProvider->key(Array) #3 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Container/Container.php(764): Illuminate\Encryption\EncryptionServiceProvider->Illuminate\Encryption\{closure}(Object(Illuminate\Foundation\Application), Array) #4 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Container/Container.php(646): Illuminate\Container\Container->build(Object(Closure)) #5 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Container/Container.php(601): Illuminate\Container\Container->resolve('encrypter', Array) #6 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(734): Illuminate\Container\Container->make('encrypter', Array) #7 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Container/Container.php(900): Illuminate\Foundation\Application->make('encrypter') #8 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Container/Container.php(828): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter)) #9 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Container/Container.php(795): Illuminate\Container\Container->resolveDependencies(Array) #10 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Container/Container.php(646): Illuminate\Container\Container->build('App\\Http\\Middle...') #11 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Container/Container.php(601): Illuminate\Container\Container->resolve('App\\Http\\Middle...', Array) #12 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(734): Illuminate\Container\Container->make('App\\Http\\Middle...', Array) #13 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(215): Illuminate\Foundation\Application->make('App\\Http\\Middle...') #14 /var/www/html/matching/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(189): Illuminate\Foundation\Http\Kernel->terminateMiddleware(Object(Illuminate\Http\Request), Object(Illuminate\Http\Response)) #15 /var/www/html/matching/public/index.php(60): Illuminate\Foundation\Http\Kernel->terminate(Object(Illuminate\Http\Request), Object(Illuminate\Http\Response)) #16 {main} "} ```
FigHy

2018/05/06 13:26

再度php artisan key:generate で鍵を作成。 ・php artisan config:clear ・php artisan config:cache こちらは実行して見ました。 変わらずです。
Lulucom

2018/05/06 13:43

config/app.phpファイルの中ではAPP_KEYをちゃんと使われていますか?
FigHy

2018/05/06 13:56

確認したところ、特に手をつけていなかったので、githubから引っ張ってきたママの状態です。 こちらをいじれば行けそうな気がしてきました。
FigHy

2018/05/06 14:19

すみません、このような形で使われておりました。 'key' => env('APP_KEY'),
FigHy

2018/05/06 14:20

viewは相変わらず、 Whoops, looks like something went wrong の表示です。。
FigHy

2018/05/07 00:48

laravelのTOPの表示できました!! ・sudo php artisan key:generateでsudoでkeyを生成し、 ・sudo php artisan config:cacheでキャッシュを再度読み込み で、表示できました。 .envにkeyは入っていたのですが、再度keyを登録し直さなければ行けなかったんでしょうか。 そこらへんが少し曖昧です。 ご解凍していただけた全ての皆さんに、感謝です。 ありがとうございました! 次回は自動デプロイにチャレンジして見ます!
guest

0

アクセスしてsymphonyコードまで動かせてる以上vhost設定は良さそうな気がします。

エラーメッセージをそのまま読むと「Exceptions/Handler.php 57行目で存在しないメソッド getStatusCode() を呼んでいる」と書いてありますね。
検索してみると「getCodeだよ。getStatusCodeじゃなくて。」というやり取りを目にしましたが心当たりありますでしょうか。
GitHub undefined getStatusCode() in Exceptions\Handler::render

投稿2018/05/06 03:13

set0gut1

総合スコア2413

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

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

退会済みユーザー

退会済みユーザー

2018/05/06 05:46

HttpExceptionInterface の派生ならあるんだけどね・w・
FigHy

2018/05/06 12:27

ということは・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問