Posted on

CakePHPのsessionがcore.phpの設定より早く消える!

CakePHPのsessionってsessionデータに作成時間を保存しておき、読み出す時にcore.phpで設定した時間が経過していないかチェックしているんですね。
サーバー設定の方はさわりに行ってないみたいです。
core.phpの

Configure::write('Session.timeout', '120');
Configure::write('Security.level', 'medium');

で3時間以上あってもサーバーの

  • session.cookie_lifetime
  • session.gc_maxlifetime

の方が短ければガーベジコレクションでsessionファイルが消えるので予想より早くログアウトしたりします。
なので
bootstrap.phpに

ini_set("session.cookie_lifetime", 100 * Configure::read('Session.timeout'));
ini_set("session.gc_maxlifetime", 100 * Configure::read('Session.timeout'));

coreの値使ってサーバー設定をcore触るだけで設定できるようにしました。
(100掛けてるのはmediumの係数の100です。session.php見ましたが定数にはなっていない感じでした。)
バージョンは1.2.6です。