30.

Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー

編集
この記事の要点
  • Laravel でよく遭遇するエラーの入口ページ
  • 頻出は 500 系 / Blade コンパイル / DB 接続 / ルーティングの 4 領域
  • php artisan tinkerstorage/logs/laravel.log が最初に見るべき場所
  • .env 変更後は必ず php artisan config:clear + cache:clear
  • 本番では APP_DEBUG=false — エラー詳細が画面に出ないので必ずログを確認

Laravel エラー対処の起点

このページは、Laravel でよく遭遇するエラーと対処の入口です。エラーメッセージの意味・起きやすい原因・まず確認したい設定やコードのポイントを整理しています。

切り分けの早道

段階確認するコマンド / ファイル目的
1storage/logs/laravel.log の末尾500 系の本物のスタックトレースを確認
2.env ファイルの内容APP_ENV / DB_HOST / APP_KEY が正しいか
3php artisan config:clearキャッシュされた古い設定をクリア
4php artisan cache:clearアプリケーションキャッシュをクリア
5php artisan route:listルートが期待通り定義されているか
6php artisan tinkerモデル / 設定値を対話的にテスト
7composer dump-autoloadクラスロード不能エラー時

500 Internal Server Error

本番で APP_DEBUG=false の場合、画面には「Whoops, looks like something went wrong.」とだけ出ます。詳細はログにあります:

# 最新エラーの確認(tail で監視)
tail -f storage/logs/laravel.log

# 本日のログだけ見る場合
grep "$(date +%Y-%m-%d)" storage/logs/laravel.log | less

# よくある原因:
#  - PHP メモリ不足: php.ini の memory_limit
#  - permission denied: storage/ や bootstrap/cache/ の書き込み権限
#  - .env の APP_KEY 未設定 → php artisan key:generate
#  - DB 接続失敗(次のセクション)

DB 接続エラー

エラー原因
SQLSTATE[HY000] [2002] Connection refusedDB サーバ未起動 / DB_HOST 違い
SQLSTATE[HY000] [1045] Access denied for userDB_USERNAME / DB_PASSWORD 違い
SQLSTATE[HY000] [1049] Unknown databaseDB_DATABASE の DB が未作成
SQLSTATE[42S02] Base table or view not foundマイグレーション未実行 → php artisan migrate
SQLSTATE[42000] Syntax errorEloquent クエリの生 SQL に typo

Blade コンパイルエラー

  • "Undefined variable: xxx": コントローラから view に変数を渡し忘れ → compact('xxx') または ['xxx' => $xxx]
  • "Class 'App\Models\Xxx' not found": モデルの use 文不足、または composer dump-autoload
  • "Trying to access array offset on value of type null": $obj->prop->sub で中間が null → $obj?->prop?->sub ?? '' (Null safe operator)
  • "@if が閉じていない": @endif 漏れ。Blade コメント {{-- --}} 内に @if が混入していないか
  • キャッシュが原因: php artisan view:clear で Blade コンパイル済みファイルをクリア

ルーティングエラー

  • "Route [xxx] not defined": route('xxx') で名前未定義 → routes/web.php->name('xxx') を確認
  • "Method [POST] not allowed": ルートが GET のみ定義されている → Route::post 追加
  • "419 Page Expired": CSRF トークン不一致 → form に @csrf、Ajax は X-CSRF-TOKEN ヘッダ
  • "404 Not Found" だが URL は合っているはず: php artisan route:cache 後にルートを変更して反映されていない → php artisan route:clear

環境変数 (.env) 関連

  • .env 変更後に反映されない: php artisan config:clear 必須
  • キャッシュ環境で動作不安定: php artisan config:cache を本番でだけ使う
  • "Encryption key (APP_KEY) not specified": php artisan key:generate で生成
  • ".env に書いた変数を config() で取れない": config/xxx.php 経由が原則。env() は config 内でだけ使う

キャッシュ系で何かおかしいときの「全部消す」コマンド

php artisan config:clear      # 設定キャッシュ
php artisan cache:clear       # アプリケーションキャッシュ
php artisan view:clear        # Blade コンパイル済み
php artisan route:clear       # ルートキャッシュ
php artisan event:clear       # イベントキャッシュ(Laravel 6+)
composer dump-autoload        # クラスローダ更新

# または artisan optimize の逆操作
php artisan optimize:clear

関連情報

  • ログレベル: .envLOG_LEVEL=debug で詳細ログ出力(本番は error 推奨)
  • Telescope: 開発時に laravel/telescope を入れると、リクエスト・クエリ・例外を Web UI で確認できる
  • Ignition: デフォルトのエラー画面。スタックトレースと変数値を見ながらデバッグ可能
  • Bagisto / Backpack / Filament 等の管理画面パッケージ: 独自のエラーパターンを持つので個別ドキュメントを参照
編集
Post Share
子ページ
  1. SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost'
  2. Add [~] to fillable property to allow mass assignment on [App\~].
  3. PHP Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in ~
  4. Changing columns for table "~" requires Doctrine DBAL; install "doctrine/dbal"
  5. MethodNotAllowedHttpException No message
  6. Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found
  7. production.ERROR: No application encryption key has been specified.
  8. Dotenv values containing spaces must be surrounded by quotes.
  9. Laravel \ Socialite \ Two \ InvalidStateException
  10. The page has expired due to inactivity. Please refresh and try again.
  11. Failed to clone https://github.com/symfony/thanks.git via https, ssh protocol
  12. Illegal offset type
  13. Cannot access protected property Illuminate\Http\Request::$...
  14. Emitted value instead of an instance of Error
  15. 画像保存時にInternal Server Error
  16. Failed to authenticate on SMTP server with username ...
  17. PostTooLargeException
  18. Database hosts array is empty.
  19. Invalid request (Unsupported SSL request)
  20. does not comply with psr-4 autoloading standard. Skipping.
  21. MySQLのSTR_TO_DATE関数を使用するとnullが返却される問題
同階層のページ
  1. インストールと設定
  2. クイックスタート & チュートリアル(初心者向け)
  3. クイックスタート & チュートリアル(中級者向け)
  4. ルーティング
  5. Bladeテンプレート(ビュー/レイアウト)
  6. コントローラー
  7. マイグレーションとテーブル定義
  8. データベースの設定
  9. Eloquentモデル (ORM)
  10. SQLとクエリビルダー
  11. バリデーション
  12. .envファイルの設定値へのアクセス
  13. 動作環境による分岐処理
  14. configフォルダ配下の設定値へのアクセス
  15. assetヘルパーを利用したpublicフォルダへのアクセス
  16. storageフォルダへのアクセス
  17. アプリケーション名の変更
  18. メンテナンス
  19. ログイン画面(認証システム)の作成
  20. ログインの必須化
  21. ログインユーザー情報の取得
  22. ルートの認証化
  23. 本番サーバーへのデプロイ方法
  24. 多言語化
  25. csrf_field
  26. ファイルのダウンロード
  27. CSVのアップロードおよび読み込み(maatwebsite/excel)
  28. ページタイトルの設定
  29. コマンド一覧
  30. エラー一覧
  31. SQLの実行ログ出力方法
  32. キャッシュのクリア
  33. Selectの結果の最初もしくは最後に任意の値を追加する方法
  34. ajaxでPOST通信する際の注意点
  35. ソーシャルログインの実装
  36. セッション情報の確認
  37. ログイン、ユーザー登録、パスワードリセット後のリダイレクト先の変更方法
  38. redirectやreturn viewにメッセージを付与する方法
  39. クッキー(cookie)の設定と取得
  40. クラスの再読み込み
  41. csrfの有効時間を変更する方法
  42. ViewComposerを用いてviewに共通の値を付与する方法
  43. View::shareを用いて共通の値を各ビューに渡す方法
  44. ミドルウェアを用いた処理の共通化
  45. Middleware内でAuth::check()などを使用する方法
  46. Controller以外でリダイレクトする方法
  47. セッションの値の取得/保存/更新/削除
  48. $requestの値を変更する方法
  49. 常時SSL化
  50. ページング(ページネーション)をする方法
  51. vue.jsとの連携
  52. Vue.jsと連携するSPA実行環境構築
  53. .envの値をvue.jsで参照する方法
  54. vue.jsを本番環境にリリースする方法
  55. could not find driver(Windows, MySQL編)