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

  • 15
    Like
  • 1
    Comment
More than 1 year has 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);

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