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

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

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

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

Q&A

解決済

1回答

3930閲覧

LaravelのForm Request Validationでエラー時に前のページではなく500エラーが表示されてしまう

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel 5

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

0グッド

0クリップ

投稿2017/07/27 08:17

初めてのLARAVEL 5.1 : (18) FORMREQUEST

上記のサイトを参考にLaravelでバリデーションシステムを作成しています。
記事の中に「エラーがあった時の前画面へのリダイレクトも ArticleRequestが行ってくれます。」という記述があるのですが、実際に実装して見た結果、エラーがあった際に前画面ではなく500エラーのページが出てきてしまいます。

いろいろ調べてみたのですが、どのサイトにも「自動的に前画面にリダイレクトする」と書かれており、原因が分かりません。

説明が下手で大変恐縮ですが、よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

500エラーのプログラム上の原因を探る方法として、エラー状況のスタックトレース等が記録されているWebサーバーのログかLaravelのログをまずは確認する必要があるかと思います。

  1. Laravelのログをデフォルト設定であれば、500エラーが出た後にstrorage/logs/laravel.log を確認します。
  2. larave.logが存在しない場合は、Webサーバーの段階でのエラーが考えられるのでWebサーバーのログ(apache、nginx等)を確認します。

※.envのAPP_DEBUGはデバッグ用にtrueにしてください

※ララ帳さんのページでは、Laravel5.1用のチュートリアルですが、Laravelのバージョンは5.1でしょうか。最新のLaravel5.4であれば何か差異が生じているかもしれません。

投稿2017/07/27 09:29

編集2017/07/27 09:39
aro10

総合スコア4106

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

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

退会済みユーザー

退会済みユーザー

2017/07/27 12:57

アドバイスいただきありがとうございます! 確認したところ、laravel.logが存在していました! のですが、何回エラーを起こしても、ログが更新されないようなのですが、 すぐにログに反映されるわけでは無いのでしょうか? バージョンの件ですが、下記サイトのように5.4でも同じように実装しているようです。 http://blog.asial.co.jp/1498
aro10

2017/07/27 21:36

ファイル書き込みが完了次第即反映されます(ファイルをテキストエディタで開いたままであれば再読込が必要です)。エラーを起こしてもログが更新されないということは、Laravelの処理がログ書き込みまで進めなかった事が考えられます。 その場合はWebサーバーのログにエラーがでているかと思うので確認してみてください
退会済みユーザー

退会済みユーザー

2017/07/29 05:19

Webサーバーのログも確認したところ、こちらもエラーを起こしても反映されていないようです…(ターミナル上から確認しているので、再読込が必要とかは無いと思われます) サーバの設定も確認したのですが、"error_log /var/log/nginx/error.log;"という記述があるので、反映されるはずと思うのですが、何か原因等分かりますでしょうか?
退会済みユーザー

退会済みユーザー

2017/07/29 05:58

【追記】 Whoopsというものを導入してみたところ、エラー時にブラウザ上にスタックトレースと思われるものが出力されるようになりました。
aro10

2017/07/29 08:35

Whoopsにエラーが出るということは、Webサーバーを超えてLaravelにまで処理が到達しているので、laravel.logにログが残るかと思います。残らない場合はlaravel.logはWebサーバーのユーザーとartisanコマンドのCLIユーザーでファイル権限競合を起こして書き込みエラーになることがあるので、storageディレクトリを一度再帰的に0777にでもしてみてログが残るか確認してみてください
退会済みユーザー

退会済みユーザー

2017/07/30 09:22

storageディレクトリを777にして確認してみたのですが、やはり更新されないようです・・・ ただ、わざとsyntax errorを出してみたところ、そちらはちゃんとlaravel.logに書き込まれました。 Whoopsのスタックトレースを辿ってみたのですが、そもそもが最後に例外を投げている処理で終わっているのですが、その場合はエラーログには書き込まれないのでしょうか? (もし、そうだったとしても、バリデーションエラーになったら前ページに自動的にリダイレクトされるはずなので、おかしいですが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問