Laravel、強いてはPHPのセッションの設定は開発者があまり意識しなくてもよいところでありますが、現在のようなクラウドシステムの中では多少考えてあげる必要があります。sessionの管理方法は様々ですが、phpのデフォルトはファイルセッションです。ファイルセッションはセッション情報をファイルに保存するという非常に原始的な方法です。ほんとんどの小規模開発ではこれで問題ありません。しかし大規模開発になってくると困ったことになります。つまりWEBサーバーの冗長化などをする場合、セッションの管理が一元管理できなくなってセッションエラーとなってしまうわけです。そこでセッション管理をDBに一元化します。
Laravelのセッション管理は公式ドキュメントのLaravel 5.8 HTTPセッションを一読してください。
またセッション情報を保存しているファイルは
\strage\framework\sessions
です。strageディレクトリをWEBサーバーにそれぞれ共通のストレージとしてマウントすればDBセッションと同様の機能を担保することができます。
file - セッションはstorage/framework/sessionsに保存されます。
cookie - セッションは暗号化され安全なクッキーに保存されます。
database - セッションはリレーショナルデータベースへ保存されます。
memcached/redis - セッションはスピードの早いキャッシュベースの保存域に保存されます。
array - テスト用
ここではDBセッションのやり方を扱います。
#app/config/session.php
'driver' => env('SESSION_DRIVER', 'file'),
↓ 変更
'driver' => env('SESSION_DRIVER', 'database'),
SESSION_DRIVER=file
↓ 変更
SESSION_DRIVER=database
マイグレーションファイルを作成します。
$ php artisan session:table
database/migrations/2021_08_01_061358_create_sessions_table.php
というような日付入りのファイルが生成されます。
マイグレーション(テーブル作成)を実行します。
$ php artisan migration
DBとの接続ができてない場合はエラーとなるので、DBの接続を確認しましょう。DBの接続方法は別項で。
成功するとsessions
というテーブルが新たに作成されているので、確認しましょう。ブラウザーからアクセスするとすぐにセッションデータを確認することができます。