この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
更新日時:2026-06-11 07:07:02
タイトル: エラー一覧
SEOタイトル: Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
| この記事の要点 |
- Laravel でよく遭遇するエラーの入口ページ
- 頻出は 500 系 / Blade コンパイル / DB 接続 / ルーティングの 4 領域
php artisan tinker と storage/logs/laravel.log が最初に見るべき場所.env 変更後は必ず php artisan config:clear + cache:clear- 本番では
APP_DEBUG=false — エラー詳細が画面に出ないので必ずログを確認
|
Laravel エラー対処の起点
このページは、Laravel でよく遭遇するエラーと対処の入口です。エラーメッセージの意味・起きやすい原因・まず確認したい設定やコードのポイントを整理しています。
切り分けの早道
| 段階 | 確認するコマンド / ファイル | 目的 |
| 1 | storage/logs/laravel.log の末尾 | 500 系の本物のスタックトレースを確認 |
| 2 | .env ファイルの内容 | APP_ENV / DB_HOST / APP_KEY が正しいか |
| 3 | php artisan config:clear | キャッシュされた古い設定をクリア |
| 4 | php artisan cache:clear | アプリケーションキャッシュをクリア |
| 5 | php artisan route:list | ルートが期待通り定義されているか |
| 6 | php artisan tinker | モデル / 設定値を対話的にテスト |
| 7 | composer 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 refused | DB サーバ未起動 / DB_HOST 違い |
| SQLSTATE[HY000] [1045] Access denied for user | DB_USERNAME / DB_PASSWORD 違い |
| SQLSTATE[HY000] [1049] Unknown database | DB_DATABASE の DB が未作成 |
| SQLSTATE[42S02] Base table or view not found | マイグレーション未実行 → php artisan migrate |
| SQLSTATE[42000] Syntax error | Eloquent クエリの生 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
関連情報
- ログレベル:
.env の LOG_LEVEL=debug で詳細ログ出力(本番は error 推奨)
- Telescope: 開発時に
laravel/telescope を入れると、リクエスト・クエリ・例外を Web UI で確認できる
- Ignition: デフォルトのエラー画面。スタックトレースと変数値を見ながらデバッグ可能
- Bagisto / Backpack / Filament 等の管理画面パッケージ: 独自のエラーパターンを持つので個別ドキュメントを参照