PHP Session Timeout

Hammurabi

Mitglied
Hallo,

ich suche gerade nach dem Fehler, warum meine Session sich nach ca. 30 min beendet.
Folgende Konfiguration habe ich vorgenommen und zeigt keinen Erfolg:
PHP:
ini_set('session.gc_maxlifetime',86400);
ini_set('session.gc_probability',1);
ini_set('session.gc_divisor',100);
ini_set('session.cookie_lifetime',0);

session_start();

if($_SESSION['user']['login_time']<=time()-7200)/*User Logout after 2H*/{
   session_unset();
}elseif($_SESSION['user']['login_time']){
   $_SESSION['user']['login_time']=time();
}

Dadurch sollte die Session 24h laufen ... allerdings beendet sie sich immer noch nach 30min (wahrscheinlich 24min Standardeinstellung). Herausgefunden habe ich es, nachdem der User nicht wie programmiert nach 2 Stunden ausgeloggt wird, sonder ca 30 min.

Hier noch einen Auszug der phpinfo:
Session Support enabled
Registered save handlers files user memcache
Registered serializer handlers php php_binary wddx

session.auto_start Off Off
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file /dev/urandom /dev/urandom
session.entropy_length 32 32
session.gc_divisor 100 1000
session.gc_maxlifetime 86400 1440
session.gc_probability 1 0
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /var/lib/php5 /var/lib/php5
session.serialize_handler php php
session.upload_progress.cleanup On On
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix upload_progress_ upload_progress_
session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0

Hoffentlich hat noch jemand eine Idee die mir helfen könnte.
 
Mittlerweile bin ich darauf gestoßen das unter Debian die Lokale session.gc_maxlifetime ignoriert wird und immer der Globale wert genommen wird, der vom Chronjob /usr/lib/php5/maxlifetime ausgelesen und benutzt wird.

Nach weiterem Nachforschen bin ich auf folgenden Beitrag bei Stackoverflow.com gekommen.

PHP:
$APPPATH = dirname(__FILE__);

if(!file_exists($APPPATH.'/tmp/sessions'))
{
    mkdir($APPPATH.'/tmp/sessions',0700,TRUE);
}

ini_set('session.save_path',$APPPATH.'/tmp/sessions');


Mit dem setzen eines separaten Verzeichnisses (session.save_path) greift der Debian Chronjob nicht mehr und die Lokal Gesetzen Einstellungen von PHP werden übernommen.

Damit funktioniert alles!

PS: Wo kann ich den Beitrag als gelöst setzen?
 
Zurück