Jörgs Webnotizen

gc_maxlifetime in .htaccess Datei anpassen

Möchte man den Session-Timeout in PHP nur für eine Domain oder ein einzelnes Verzeichnis erhöhen, kann man hierzu den Wert für den php.ini Parameter session.gc_maxlifetime entsprechend anpassen. Läuft PHP als Modul des Apachen (mod_php), so geht dies nicht über eine php.ini Datei im jeweiligen Verzeichnis. Stattdessen könnte man den Wert aber in der .htaccess Datei des betreffenden Verzeichnisses definieren:


<IfModule mod_php5.c>
    php_value session.gc_maxlifetime 3600
</IfModule>

Unter Debian hat dies allerdings keinen Effekt, da dort der Garbage Collector von PHP deaktiviert ist, indem der Wert für session.gc_probability in der php.ini auf 0 gesetzt wurde. Stattdessen räumt ein Cronjob die Session-Dateien ab und dieser kümmert sich nicht darum, was in einzelnen .htaccess Dateien steht. Man könnte nun für das genannte Verzeichnis die Garbage Collection von PHP wieder aktivieren und hierzu ein eigenes Session-Verzeichnis definieren:


<IfModule mod_php5.c>
    php_value session.gc_maxlifetime 3600
    php_value session.gc_probability 1
    php_value session.gc_divisor 100
    # session path must be outside of document root
    php_value session.save_path /path/to/sessions
</IfModule>

Der PHP-Prozess (im Fall von php_mod unter Debian: www-data) muss für das angegebene Session-Verzeichnis Lese- und Schreibrechte haben.

Aber Achtung: die Session-Dateien müssen gut vor unbefugten Zugriffen gesichert werden! Das Session-Verzeichnis sollte deswegen von außen nicht erreichbar, also außerhalb des DocumentRoot gelegen sein!

Tags: Apache, Debian, PHP

Kommentar schreiben

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

* Pflichtfeld

Erstkommentare werden erst nach Freischaltung veröffentlicht