web-dev-qa-db-ja.com

PHP:セッションのデフォルトのライフタイムは何ですか

session_start()を呼び出すページにヒットした場合。ページを更新する場合、新しいセッションIDが発行されるように、どれくらい待つ必要がありますか?

53
Greg B

Php.iniをチェックしてください。session.gc_maxlifetimeに設定されている値は、秒単位のIDライフタイムです。

デフォルトは1440秒(24分)です

http://www.php.net/manual/en/session.configuration.php

編集:一部のコメントが指摘しているように、上記は完全に正確ではありません。セッションライフタイムを実装する理由と方法のすばらしい説明は、ここにあります。

PHP 30分後にセッションを終了するにはどうすればよいですか?

50
Martin

session.gc_maxlifetimeディレクティブのphp.iniのデフォルト(「gc」はガベージコレクション用)は1440秒または24分です。マニュアルのSession Runtime Configuationページを参照してください。

http://www.php.net/manual/en/session.configuration.php

この定数は、php.iniファイルまたは.httpd.confファイルにアクセスできる場合は変更できます。Webサイトのローカルの.htaccessファイルでも変更できます。 .htaccessメソッドを使用してタイムアウトを1時間に設定するには、サイトのルートディレクトリにある.htaccessファイルに次の行を追加します。

php_value session.gc_maxlifetime "3600"

共有ホストを使用している場合、またはデフォルトを変更していない複数のサイトをホストしている場合は注意してください。デフォルトのセッションの場所は/ tmpディレクトリであり、これらの他のサイトのガベージコレクションルーチンは24分ごと​​に実行されます(そして、どのくらいの期間should保持されているかに関係なく、プロセス内のセッションを消去します) 。より良い説明については、マニュアルページの または このサイト を参照してください。

これに対する答えは、session.save_pathを使用してセッションを別のディレクトリに移動することです。これはまた、悪人がデフォルトの/ tmpディレクトリから訪問者のセッションをハイジャックするのを防ぐのにも役立ちます。

22
flamingLogos

PHP.net サイトのユーザーによると、セッションを維持するための彼の努力は失敗したため、回避策を講じなければなりませんでした。

<?php

$Lifetime = 3600;
$separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";

$DirectoryPath = dirname(__FILE__) . "{$separator}SessionData";
//in Wamp for Windows the result for $DirectoryPath
//would be C:\wamp\www\your_site\SessionData

is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777);

if (ini_get("session.use_trans_sid") == true) {
    ini_set("url_rewriter.tags", "");
    ini_set("session.use_trans_sid", false);

}

ini_set("session.gc_maxlifetime", $Lifetime);
ini_set("session.gc_divisor", "1");
ini_set("session.gc_probability", "1");
ini_set("session.cookie_lifetime", "0");
ini_set("session.save_path", $DirectoryPath);
session_start();

?>

SessionDataフォルダーには、セッション情報を保持するためのテキストファイルが格納されます。各ファイルの名前は「sess_a_big_hash_here」に似ています。

3
Junior M

あなたのPHP設定に依存します...
phpinfo()を使用して、セッションの章をご覧ください。セッションの存続期間に影響するsession.gc_maxlifetimeおよびsession.cache_expireおよびsession.cookie_lifetimeなどの値があります

編集:マーティンが前に書いているようです

2
jochil

ただし、ほとんどのxampp/ampp /...- setupsおよび一部のLinuxディストリビューションでは、0になっていることに注意してください。これは、スクリプト内で実行するまで(またはシェル経由でダーティになるまで)ファイルが削除されないことを意味します

PHP.INI:

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0
1
Sliq

ini_set('session.gc_maxlifetime', 28800); // 8 * 60 * 60のようなものも使用できます。

0
Eduardo Cuomo