はじめに
LaravelでPHPの学習をしている中で、セッション関連のエラーに遭遇したため、その対処法について記録しておきます。
本記事は、個人的にPHPをキャッチアップしている初学者による備忘録です。
書こうと思ったきっかけ
Laravel環境をDocker上に構築し、フォームのPOST処理などを試していた際、Internal Server Error
に遭遇しました。ブラウザ上には以下のようなエラーメッセージが表示されました:
Illuminate\Database\QueryException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.sessions' doesn't exist
このエラーは、.env
にて SESSION_DRIVER=database
が指定されている状態で sessions
テーブルが存在しないときに発生します。
内容
エラー原因
Laravelは、セッション情報を sessions
テーブルに保存しようとしましたが、該当のテーブルが存在していなかったためエラーになりました。
解決手順(実際に行った対応)
make migrate
このコマンドは以下を実行してくれます:
docker compose exec php-app php artisan migrate
実行ログ:
INFO Preparing database.
Creating migration table .............................................................. 18.63ms DONE
INFO Running migrations.
0001_01_01_000000_create_users_table .................................................. 58.28ms DONE
0001_01_01_000001_create_cache_table .................................................. 18.64ms DONE
0001_01_01_000002_create_jobs_table ................................................... 44.38ms DONE
2025_05_05_010232_create_messages_table ................................................ 9.03ms DONE
この実行によって、sessions
テーブルも含めてすべてのマイグレーションが処理され、エラーが解消されました。
まとめ
このエラーはLaravelでセッションをDB管理しようとした際に非常によくあるもので、php artisan session:table
→ php artisan migrate
の流れで解決できました。
今回は make migrate
により一括実行したことで、全てのテーブルが作成され、sessions
テーブル関連のエラーも無事解消されました。
Laravelのセッションは .env
で SESSION_DRIVER
を file
や database
に切り替えられるため、用途に応じて設定とマイグレーションを調整するのがポイントだと痛感しました...!