Posted at

PHP&CakePHPでセッション保持の時間を設定する

More than 3 years have passed since last update.


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);

これで反映された。若干強攻策だけど以上。