LoginSignup
17
16

More than 5 years have passed since last update.

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

Posted at

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

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

17
16
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16