Laravel5のエラー対策

Laravel5で、エラー画面が表示されたときに、どのようなエラーでどこを調べればいいかをまとめてみたいと思います。私もしょっちゅうエラーは出させますので、メモとして保存しておきたいと思います。

NotFoundHttpException

NotFoundHttpExceptionのみ

  • NotFoundHttpExceptionのみで、他に何も表示されない場合は、コントローラ名が間違えている可能性が高いです。
    URLは、public/コントローラ/メソッド/パラメータの順番で表示されますので、下記の例では、gather です。2015-05-30 18-01-39

Controller method not found.

  • これは、単に『コントローラのメソッドが見つかりません』といっているだけですので、URLを調べればすぐにわかります。
    URLは、public/コントローラ/メソッド/パラメータの順番で表示されますので、下記の例では、shows です。
    2015-05-30 17-45-17
  • ですので、GathersController.phpのgetShowsメソッドが存在するかどうかを調べてください。結構スペルミスの可能性が高いです。

ErrorException

Trying to get property of non-object

  • 『指定したオブジェクトのプロパティがない』との事ですので、まずURLのパラメータが合っているかどうかを調べてください。
    2015-05-30 18-17-13

View [ビュー名] not found.

  • 下記の例では、index.blade.phpビューのなかに、指定のビューが見つからないとのことで、継承するレイアウトビューのスペルミスが原因です。
    2015-05-30 19-12-14

Undefind variable:変数名

  • 指定の変数名は未定義です。これも変数名のスペルミスの可能性が高いです。下記の例の場合、GathersControllerのindexメソッドに、$gatherが存在するかどうかをまず調べます。
    2015-05-30 18-40-47

FatalErrorException

Class ‘App\Http\Controllers\Gather’ not found

  • 上記では、Gatherという名前のクラスがControllersフォルダに見つからないとのことですが、URLがpublic/gathersですので、まず調べるところは、GathersControllerのindexメソッドです。そこで、Gather::find()のように、Gatherモデルを使用していた場合、モデルをインポートしていない可能性があります。use演算子でインポートするか、モデルは名前空間付きの名前(\App\Gather::find())のように記述してください。
    2015-05-30 18-28-17

InvalidArgumentException

View [ビュー名] not found.

  • 指定のビューが見つからないとのことですので、resources/viewsフォルダに、指定のビューがあるかどうかを調べてください。尚、メソッドの指定の場合は、indexは不要ですが、ビューの場合は、indexも必ず入力して下さい。下記の場合は、view(‘gahter.index’) と指定するところをview(‘gather’) と指定してエラーになっています。
    2015-05-30 18-57-43

TokenMismatchException

  • トークンエラーですので、フォームからcsrf_token()が送信されていない可能性が高いです。Laravelでは、デフォルトでPOST送信は、トークンチェックを行います。{!! Form::open() !!}でフォームを生成している場合はcsrf_token()は自動的に生成されるのですが、<form>タグで記述した場合は、hidden要素で、csrf_token()を添付する必要がありますので、気を付けて下さい。また、期限切れのフォームから送信した場合もこのエラーが出ます。
    2015-05-30 19-25-34

MassAssignmentException

  • 複数代入の設定ミスの可能性が高いです。モデルに複数代入が設定されているかどうかを確認して下さい。
    2015-05-30 19-39-09

QueryException

Column not found: 1054 Unknown column ‘カラム名’

  • SQLエラーです。指定のカラム名が見つからないとのことですので、カラム名のスペルミスの可能性が高いです。下記の場合、content という名前のカラムがgathersテーブルに見つからないとのことです。
    2015-05-30 19-44-41

本日は、以上です。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ