Codeigniter3.1.11のsess_expirationのお話

CodeIgniterでシステム開発をしているが、セッション情報をブラウザが閉じられるまで保持したい!
と思いconfig/config.phpの 「$config[‘sess_expiration’]」に0を設定するが有効になっていないらしい。。。

なんでだ?と思い調べたら「\system\libraries\Session\Session.php」の297行目にこうある。

$expiration = config_item('sess_expiration');// この行は関数上部にある。


if (empty($expiration))
{
$params['expiration'] = (int) ini_get('session.gc_maxlifetime');
}
else
{
$params['expiration'] = (int) $expiration;
ini_set('session.gc_maxlifetime', $expiration);
}

これおかしくないですか?「$expiration」にはconfigで指定した「0」が入って来るんですが、if文でemptyで見てると、絶対trueになりますよね?そうすると、iniファイルで設定している(デフォルト1440)が必ず取れてくるんですが。

configの説明に

| 'sess_expiration'
|
| The number of SECONDS you want the session to last.
| Setting to 0 (zero) means expire when the browser is closed.

と書かれていますが、絶対 browser is closedにはならないですよね。。。

かなりハマったので記事にしてみました。