dedlfix: session-lifetime in php.ini

Beitrag lesen

Hi!

Ich möchte die Laufzeit auf 2 Stunden einstellen, etwa so:
In der php.ini:
session.gc_maxlifetime(7200);

Das ini-Format ist anders, nämlich mit = zwischen Direktivennamen und Wert, ohne Klammern und ohne abschließendes Zeichen (beziehungsweise Zeilenumbruch reicht).

Reicht in der php.ini dieser eine Eintrag?

Jein. Es ist auch noch erforderlich, dass session.save_path auf ein individuelles Verzeichnis verweist. Der Session-Garbage-Collector räumt nämlich nach seinen individuellen Vorgaben sämtliche Session-Dateien auf, weil er keinen Unterschied zwischen den Projektzugehörigkeiten macht oder vielmehr machen kann, denn es gibt kein Merkmal, das eine Zugehörigkeit von Sessions zu Projekten kennzeichnet.

Und "weiss" php aus welcher ini-datei es die Einstellungen nehmen soll?

Das ist eine Frage der Grundkonfiguration PHPs, die mitunter schon beim Kompilieren bestimmt wird. Es gibt Konstellationen, besonders wenn PHP als CGI betrieben wird, da kann eine php.ini im Verzeichnis der aufgerufenen Datei die serverseitige außer Kraft setzen.

Nach meinem Wissen müsste es jetzt so aussehen: php nimmt die session-lifetime aus meiner php.ini und alle anderen Einstellungen aus der serverseitigen php.ini ?

Nein, dieses Verhalten bietet nur die .user.ini (ab PHP 5.3). Eine eigene php.ini bedeutet, dass sämtliche Einstellungen aus dieser genommen werden. Das bedeutet wiederum, dass du spezielle Einstellungen des Hosters händisch übernehmen musst. Besonders solche Werte wie mysql(i).default_socket können wichtig sein, wenn der Hoster einen Zugriff über Socket statt TCP haben will. Alle sicherheitsrelevanten Werte sollten - eine aktuelle PHP-Version vorausgesetzt - nach aktuellen Default-Vorgaben eingestellt sein, wenn der Hoster nichts anderes einkompiliert hat. Hier schadet eine Überprüfung nicht.

Lo!