PHPの場合
以下を読み込んでればとりあえずセッション時間は保持される。
config.php
<?php
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1);
ini_set('session.gc_maxlifetime', 24*60*60);
それぞれの項目の説明
session.gc_probability: (分子)
session.gc_divisor: (分母)
session.gc_maxlifetime: (保持時間)
session_start()が行われたときに、session.gc_probabilityを分子、session.gc_divisorを分母とする確率で、 session.gc_maxlifetimeよりファイル更新日付の古いファイルをsession.save_pathから削除します。
CakePHPの場合
普通に設定してもなぜか反映されない(泣)
app/Config/core.phpにセッション時間指定しても、なぜか反映されない.......!!!!
app/Config/core.php
//これを設定してもなぜか反映されない。
Configure::write('Session', array(
'defaults' => 'php',
'timeout' => 24*60*60, //1day
'autoRegenerate' => true,
'ini' => array(
'session.gc_maxlifetime' => 24*60*60, //1day
),
));
解決策
app/webroot/index.phpに直接設定してあげた。
app/webroot/index.php
//101行目あたり
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1);
ini_set('session.gc_maxlifetime', 24*60*60);
これで反映された。若干強攻策だけど以上。