Chrome によると、私のサイトの PHPSESSID Cookie の有効期限は
Expires: Monday, November 26, 2012 2:46:39 PM
ただし、セッションは数時間後に期限切れになります。各ページで session_start() を呼び出しています。同様の質問に対して提供されたソリューションを読んで、設定してみました
ini_set("session.cache_expire",300*24*60*60);
と
ini_set("session.gc_maxlifetime",100*24*60*60);
前にsession_start()
しかし、これは問題を解決しませんでした。(初期値はそれぞれ 180 と 1440 に設定されています。)
私は共有サーバーを使用していますが、別の提案はデフォルトの tmp ディレクトリを変更してルートではないようにすることでした (ガベージ コレクション プロセスによって Cookie が削除される可能性があります)。
$docroot = $_SERVER['DOCUMENT_ROOT'];
$tmpdir = "$docroot/tmpx";
session_save_path($tmpdir);
これで問題は解決しません。(Chromeだけでなく、他のブラウザでも同じ問題があります。)他に何が間違っているのでしょうか?
更新:現在のセッションのファイルをローカルに保存し、数時間後にログインを試みました。Chrome の PHPSESSID Cookie (つまり、コンテンツがこのセッション ファイルの名前である Cookie) は、予想どおり 100 日先の日付で保存されたままですが、サーバー上の実際のセッション ファイルにはデータが含まれていません。(存在しますが、以前の 192 バイトではなく 0 バイトです。) したがって、セッション ファイルは削除されていないように見えますが、内容は消去されています。