Laufzeit-Konfiguration

Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.

Session-Konfigurationsoptionen
NameStandardVeränderbarChangelog
session.save_path""INI_ALL 
session.name"PHPSESSID"INI_ALL 
session.save_handler"files"INI_ALL 
session.auto_start"0"INI_PERDIR 
session.gc_probability"1"INI_ALL 
session.gc_divisor"100"INI_ALL 
session.gc_maxlifetime"1440"INI_ALL 
session.serialize_handler"php"INI_ALL 
session.cookie_lifetime"0"INI_ALL 
session.cookie_path"/"INI_ALL 
session.cookie_domain""INI_ALL 
session.cookie_secure"0"INI_ALLVor PHP 7.2.0 war die Grundeinstellung "".
session.cookie_httponly"0"INI_ALLVor PHP 7.2.0 war die Grundeinstellung "".
session.cookie_samesite""INI_ALLVerfügbar seit PHP 7.3.0.
session.use_strict_mode"0"INI_ALL 
session.use_cookies"1"INI_ALL 
session.use_only_cookies"1"INI_ALL 
session.referer_check""INI_ALL 
session.cache_limiter"nocache"INI_ALL 
session.cache_expire"180"INI_ALL 
session.use_trans_sid"0"INI_ALL 
session.trans_sid_tags"a=href,area=href,frame=src,form="INI_ALLVerfügbar seit PHP 7.1.0.
session.trans_sid_hosts$_SERVER['HTTP_HOST']INI_ALLVerfügbar seit PHP 7.1.0.
session.sid_length"32"INI_ALLVerfügbar seit PHP 7.1.0.
session.sid_bits_per_character"4"INI_ALLVerfügbar seit PHP 7.1.0.
session.upload_progress.enabled"1"INI_PERDIR 
session.upload_progress.cleanup"1"INI_PERDIR 
session.upload_progress.prefix"upload_progress_"INI_PERDIR 
session.upload_progress.name"PHP_SESSION_UPLOAD_PROGRESS"INI_PERDIR 
session.upload_progress.freq"1%"INI_PERDIR 
session.upload_progress.min_freq"1"INI_PERDIR 
session.lazy_write"1"INI_ALL 
session.hash_function"0"INI_ALLEntfernt in PHP 7.1.0
session.hash_bits_per_character"4"INI_ALLEntfernt in PHP 7.1.0
session.entropy_file""INI_ALLEntfernt in PHP 7.1.0
session.entropy_length"0"INI_ALLEntfernt in PHP 7.1.0
Weitere Details und die Definitionen der INI_*-Konstanten sind unter Wo Konfigurationseinstellungen gesetzt werden können zu finden.

Das Session-Verwaltungssystem unterstützt eine Anzahl von Konfigurationsoptionen, die in der php.ini gesetzt werden können. Wir geben dazu einen kleinen Überblick.

session.save_handlerstring
session.save_handler definiert den Namen der Routine, die verwendet wird, um die Daten zu speichern und abzurufen, die mit der Session in Verbindung stehen. Grundeinstellung files. Zu beachten ist, dass einzelne Erweiterungen ihre eigenen save_handler registrieren können. Welche Routinen registriert sind, kann auf Basis der jeweiligen Installation mit phpinfo() ermittelt werden. Siehe auch session_set_save_handler().
session.save_pathstring
session.save_path definiert das Argument, das an die Speicherroutine übergeben wird. Wenn die standardmäßige files-Routine gewählt wird, ist das der Pfad, unter dem die Dateien erzeugt werden. Siehe auch session_save_path().

Für diese Anweisung gibt es ein optionales Argument N, das die Anzahl der Verzeichnisebenen bestimmt, über welche die Session-Dateien verteilt werden. Wird sie zum Beispiel auf '5;/tmp' gesetzt, kann das das Anlegen einer Session-Datei und -Speicherstelle wie /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If bewirken. Um N verwenden zu können, müssen alle diese Verzeichnisse vorher angelegt werden. In ext/session gibt es für diesen Zweck ein kleines Shell-Skript namens mod_files.sh und eine Version für Windows namens mod_files.bat. Zu beachten ist, dass die automatische Speicherbereinigung (Garbage Collection) nicht durchgeführt wird, wenn N verwendet wird und größer 0 ist (für weitere Informationen siehe eine Kopie der php.ini). Außerdem muss bei der Verwendung von N beachtet werden, dass session.save_path zwischen Anführungsstriche gesetzt wird, weil der Trenner (;) in der php.ini auch für Kommentare verwendet wird.

Standardmäßig erzeugt die files-Speicherroutine Dateien mit dem Modus 600. Dieser Wert kann mit dem optionalen Argument MODE geändert werden: N;MODE;/pfad, wobei MODE die oktale Darstellung des Modus ist. Die Angabe von MODE hat keine Auswirkungen auf den Prozess umask.

Warnung

Wenn ein Verzeichnis gewählt wurde, für das jeder Leserechte hat, wie das z. B. bei /tmp (Grundeinstellung) der Fall ist, könnten andere Serverbenutzer mit Hilfe der Dateiliste dieses Verzeichnisses die Sessions entführen.

Achtung

Wird das oben beschriebene optionale Argument N für die Verzeichnisebenen verwendet, ist zu beachten, dass ein Wert größer als 1 oder 2 wegen der großen Anzahl an benötigten Verzeichnissen für die meisten Websites unangemessen ist: z. B. bedeutet ein Wert von 3, dass (2 ** session.sid_bits_per_character) ** 3 Verzeichnisse im Dateisystem existieren, was eine große Verschwendung an Speicher und Inodes zur Folge haben kann.

N größer als 2 sollte nur verwendet werden, wenn die Website wirklich so groß ist, dass dies erforderlich ist.

session.namestring
session.name definiert den Namen der Session, der als Cookie-Name verwendet wird. Grundeinstellung PHPSESSID. Siehe auch session_name().
session.auto_startbool
session.auto_start definiert, ob das Session-Modul zu Beginn einer Anfrage automatisch eine Session startet. Grundeinstellung 0 (deaktiviert).
session.serialize_handlerstring
session.serialize_handler definiert den Namen der Routine, die verwendet wird, um Daten zu serialisieren/deserialisieren. Unterstützt werden das PHP-Serialisierungsformat (Name php_serialize), die internen PHP-Formate (Namen php und php_binary) und WDDX (Name wddx). WDDX steht nur zur Verfügung, wenn PHP mit WDDX-Unterstützung kompiliert wurde. php_serialize verwendet intern die einfachen serialize/unserialize-Funktionen und hat nicht die Einschränkungen, die php und php_binary haben. Ältere Serialisierungsroutinen können weder numerische Indizes noch alphanumerische Indizes, die Sonderzeichen (| und !) enthalten, in $_SESSION speichern. Um am Ende des Skripts Fehler wegen solcher Indizes zu vermeiden, sollte php_serialize verwendet werden. Grundeinstellung php.
session.gc_probabilityint
session.gc_probability wird in Verbindung mit session.gc_divisor dazu verwendet, die Wahrscheinlichkeit zu regeln, mit der die gc-Routine (gc=garbage collection, Speicherbereinigung) gestartet wird. Grundeinstellung 1. Siehe auch session.gc_divisor.
session.gc_divisorint
session.gc_divisor definiert gekoppelt mit session.gc_probability die Wahrscheinlichkeit, mit der die gc-Routine (gc=garbage collection, Speicherbereinigung) bei jeder Initialisierung einer Session gestartet wird. Die Wahrscheinlichkeit errechnet sich aus gc_probability/gc_divisor. 1/100 bedeutet z. B., dass die gc-Routine bei jeder Anfrage mit einer Wahrscheinlichkeit von 1% gestartet wird. Grundeinstellung 100.
session.gc_maxlifetimeint
session.gc_maxlifetime definiert die Anzahl der Sekunden, nach denen Daten als 'garbage' ('Müll') betrachtet und möglicherweise entsorgt werden. Die Speicherbereinigung kann zu Beginn einer Session durchgeführt werden (abhängig von session.gc_probability und session.gc_divisor). Die Grundeinstellung ist 1440 (24 Minuten).

Hinweis: Falls sich der Wert von session.gc_maxlifetime in verschiedenen Skripten unterscheidet, aber sie die Session-Daten an der selben Stelle speichern, löscht das Skript mit dem kleinsten Wert die Daten. In diesem Fall sollte die Anweisung zusammen mit der Anweisung session.save_path verwendet werden.

session.referer_checkstring
session.referer_check enthält die Zeichenkette, auf die jeder HTTP-Referer überprüft werden soll. Wenn der Referer vom Client gesendet wurde und die Zeichenkette nicht gefunden wurde, wird die eingebettete Session-ID als ungültig gekennzeichnet. Grundeinstellung ist eine leere Zeichenkette.
session.entropy_filestring
session.entropy_file gibt den Pfad zu einer externen Quelle (Datei) an, die bei der Erzeugung einer Session-ID als zusätzliche Entropiequelle verwendet wird. Beispiele sind /dev/random oder /dev/urandom, die auf vielen Unix-Systemen zur Verfügung stehen. Diese Einstellung wird unter Windows unterstützt. Wenn session.entropy_length auf einen von Null verschiedenen Wert gesetzt wird, verwendet PHP die Windows-Zufalls-API als Entropie-Quelle.

Hinweis: Entfernt in PHP 7.1.0. Die Grundeinstellung für session.entropy_file ist /dev/urandom oder /dev/arandom, falls es verfügbar ist.

session.entropy_lengthint
session.entropy_length definiert die Anzahl der Bytes, die von der oben spezifizierten Datei gelesen werden. Grundeinstellung 32 (deaktiviert). Entfernt in PHP 7.1.0.
session.use_strict_modebool
session.use_strict_mode definiert ob das Modul den strikten Modus für die Session-ID verwendet. Wenn dieser Modus aktiviert ist, akzeptiert das Modul keine Session-ID, die nicht initialisiert ist. Falls ein Browser eine uninitialisierte Session-ID sendet, wird eine neue Session-ID zum Browser gesendet. Im strikten Modus sind Anwendungen vor der Übernahme der Session durch Session-Fixation geschützt. Grundeinstellung 0 (deaktiviert).

Hinweis: Das Aktivieren von session.use_strict_mode ist für grundsätzliche Session-Sicherheit verpflichtend. Es wird empfohlen, dass alle Sites dies aktiveren. Verdeutlichender Beispielcode kann der Dokumentation von session_create_id() entnommen werden.

Warnung

Wenn eine benutzerdefinierte Session-Routine, die per session_set_save_handler() registriert wurde, weder SessionUpdateTimestampHandlerInterface::validateId() implementiert, noch einen validate_sid-Callback übergibt, ist der strikte Session-ID-Modus praktisch deaktiviert, unabhängig vom Wert dieser Anweisung. Im Besonderen ist zu beachten, dass SessionHandlerSessionHandler::validateId()nicht implementiert.

session.use_cookiesbool
session.use_cookies definiert, ob das Modul Cookies verwendet, um die Session-ID clientseitig zu speichern. Grundeinstellung 1 (aktiviert).
session.use_only_cookiesbool
session.use_only_cookies definiert, ob das Modul nur Cookies verwendet, um die Session-ID clientseitig zu speichern. Durch die Aktivierung dieser Einstellung werden Angriffe verhindert, die darauf basieren, dass Session-IDs in URLs weitergegeben werden. Grundeinstellung 1 (aktiviert).
session.cookie_lifetimeint
session.cookie_lifetime definiert die Cookie-Lebensdauer, die an den Browser geschickt wird, in Sekunden. Der Wert 0 bedeutet "bis der Browser geschlossen wird." Grundeinstellung 0. Siehe auch session_get_cookie_params() und session_set_cookie_params().

Hinweis: Der Verfalls-Zeitstempel wird relativ zur Serverzeit gesetzt, die nicht unbedingt mit der Browserzeit des Clients übereinstimmt.

session.cookie_pathstring
session.cookie_path definiert den Pfad, der im Session-Cookie gesetzt wird. Grundeinstellung /. Siehe auch session_get_cookie_params() und session_set_cookie_params().
session.cookie_domainstring
session.cookie_domain definiert die Domain, die im Session-Cookie gesetzt wird. In der Grundeinstellung überhaupt keine, was bedeutet, dass entsprechend der Spezifikation für Cookies der Hostname des Servers verwendet wird, der das Cookie erzeugt hat. Siehe auch session_get_cookie_params() und session_set_cookie_params().
session.cookie_securebool
session.cookie_secure definiert, ob Cookies nur über sichere Verbindungen geschickt werden sollen. Wenn diese Option auf on gesetzt ist, funktionieren Sessions nur mit HTTPS-Verbindungen. Ist sie auf off gesetzt, funktionieren Sessions sowohl mit HTTP- als auch mit HTTPS-Verbindungen. Grundeinstellung off. Siehe auch session_get_cookie_params() und session_set_cookie_params().
session.cookie_httponlybool
session.cookie_httponly markiert das Cookie als nur über das HTTP-Protokoll zugänglich. Das bedeutet, dass Skriptsprachen wie JavaScript nicht auf das Cookie zugreifen können. Diese Einstellung kann helfen, Identitätsdiebstahl durch XSS-Angriffe zu reduzieren (allerdings wird sie nicht von allen Browsern unterstützt).
session.cookie_samesitestring
Erlaubt es Servern, zu bestätigen, dass ein Cookie nicht mit seitenübergreifenden Anfragen gesendet werden sollte. Diese Bestätigung ermöglicht es User-Agents die Gefahr von herkunftsübergreifenden Informationslecks zu lindern und bietet etwas Schutz gegen Fälschungsangriffe auf seitenübergreifende Anfragen (Cross-Site Request Forgery Attacks). Es ist zu beachten, dass dies nicht von allen Browsern unterstützt wird. Ein leerer Wert bedeutet, dass kein SameSite-Cookie-Attribut gesetzt wird. Lax und Strict bedeuten, dass das Cookie bei POST-Anfragen nicht domainübergreifend gesendet wird; Lax sendet das Cookie für domainübergreifende GET-Anfragen, während Strict das nicht tut.
session.cache_limiterstring
session.cache_limiter definiert die Methode der Cacheverwaltung, die bei Session-Seiten verwendet wird. Das kann einer der folgenden Werte sein: nocache, private, private_no_expire oder public. Grundeinstellung nocache. Informationen über die Bedeutung dieser Werte sind in der session_cache_limiter()-Dokumentation zu finden.
session.cache_expireint
session.cache_expire definiert in Minuten, wie lange Session-Seiten im Cache bleiben. Bei nocache ist diese Angabe wirkungslos. Grundeinstellung 180. Siehe auch session_cache_expire().
session.use_trans_sidbool
session.use_trans_sid bestimmt ob transparente SID-Unterstützung aktiviert ist oder nicht. Grundeinstellung 0 (deaktiviert).

Hinweis: Die URL-basierte Session-Verwaltung hat im Vergleich zur Cookie-basierten Session-Verwaltung zusätzliche Sicherheitsrisiken. Benutzer können zum Beispiel eine URL, die eine aktive Session-ID enthält, per E-Mail an Freunde schicken oder in ihren Bookmarks speichern und immer mit der selben Session-ID auf die Seite zugreifen. Seit PHP 7.1.0 werden auch vollständige URL-Pfade, z. B. https://php.net/, vom trans-sid-Feature unterstützt. Vorherige PHP-Versionen unterstützten nur relative URL-Pfade. Rewrite-Ziel-Hosts werden durch session.trans_sid_hosts definiert.

session.trans_sid_tagsstring
session.trans_sid_tags gibt an, welche HTML-Tags umgeschrieben werden, um die Session-ID zu enthalten, wenn transparente SID-Unterstützung aktiviert ist. Die Voreinstellung ist a=href,area=href,frame=src,input=src,form=. form ist ein besonderes Tag. <input hidden="session_id" name="session_name"> wird als Form-Variable hinzugefügt.

Hinweis: Vor PHP 7.1.0, wurde url_rewriter.tags für diesen Zweck verwendet. Seit PHP 7.1.0 wird fieldset nicht mehr als besonderes Tag angesehen.

session.trans_sid_hostsstring
session.trans_sid_hosts gibt an, welche Hosts umgeschrieben werden, um die Session-ID zu enthalten, wenn transparente SID-Unterstützung aktiviert ist. Die Voreinstellung ist $_SERVER['HTTP_HOST']. Mehrere Hosts können durch "," getrennt angegeben werden; Leerzeichen sind nicht erlaubt. Beispiel: php.net,wiki.php.net,bugs.php.net.
session.sid_lengthint
session.sid_length erlaubt die Angabe der Länge der Session-ID-Zeichenkette. Diese Länge kann zwischen 22 und 256 liegen. Die Voreinstellung ist 32. Wird Kompatibilität benötigt, kann 32, 40 etc. angegeben werden. Längere Session-IDs sind schwieriger zu erraten. Wenigstens 32 Zeichen werden empfohlen.
Tipp

Hinweis zur Kompatibiliät: Anstelle von session.hash_function=0 (MD5) und session.hash_bits_per_character=4, session.hash_function=1 (SHA1) und session.hash_bits_per_character=6 sollte 32 verwendet werden. Anstelle von session.hash_function=0 (MD5) und session.hash_bits_per_character=5 sollte 26 verwendet werden. Anstelle von session.hash_function=0 (MD5) und session.hash_bits_per_character=6 sollte 22 verwendet werden. Die INI-Werte müssen so konfiguriert werden, dass die Session-ID mindestens 128 Bits enthält. Es ist darauf zu achten, dass der Wert für session.sid_bits_per_character angemessen ist, da die Session-ID sonst schwächer ist.

Hinweis: Diese Einstellung wurde in PHP 7.1.0 eingeführt.

session.sid_bits_per_characterint
session.sid_bits_per_character erlaubt die Angabe der Anzahl der Bits in kodierten Session-ID-Zeichen. Die möglichen Werte sind '4' (0-9, a-f), '5' (0-9, a-v) und '6' (0-9, a-z, A-Z, "-", ","). Die Voreinstellung ist 4. Mehr Bits ergeben stärkere Session-IDs. 5 wird für die meisten Umgebungen empfohlen.

Hinweis: Diese Einstellung wurde in PHP 7.1.0 eingeführt.

session.hash_functionmixed
session.hash_function ermöglicht es, den Prüfsummen-Algorithmus für die Erzeugung von Session-IDs selbst zu bestimmen. '0' bedeutet MD5 (128 Bit) und '1' bedeutet SHA-1 (160 Bit).

Es ist auch möglich, einen der Algorithmen zu bestimmen, die durch die Hash-Erweiterung (falls vorhanden) zur Verfügung stehen, z. B. sha512 oder whirlpool. Eine vollständige Liste der unterstützten Algorithmen kann mit der Funktion hash_algos() abgerufen werden.

Hinweis: Entfernt in PHP 7.1.0.

session.hash_bits_per_characterint
session.hash_bits_per_character ermöglicht es, zu definieren wieviele Bit bei der Umwandlung der binären Prüfsummen-Daten in etwas Lesbares in jedem Zeichen gespeichert werden. Mögliche Werte sind '4' (0-9, a-f), '5' (0-9, a-v) und '6' (0-9, a-z, A-Z, "-", ",").

Hinweis: Entfernt in PHP 7.1.0.

session.upload_progress.enabledbool
Aktiviert die Überwachung des Upload-Fortschritts und füllt die entsprechende $_SESSION-Variable. Grundeinstellung 1 (aktiviert).
session.upload_progress.cleanupbool
Löscht die Fortschritts-Informationen, sobald alle POST-Daten gelesen wurden (also der Upload abgeschlossen ist). Grundeinstellung 1 (aktiviert).

Hinweis: Es wird dringend empfohlen diese Funktion aktiviert zu lassen.

session.upload_progress.prefixstring
Ein Präfix für den Namen des Schlüssels für den Upload-Fortschritt im $_SESSION-Array. An diesen wird der Wert von $_POST[ini_get("session.upload_progress.name")] angehängt, um einen eindeutigen Schlüssel zu erhalten. Grundeinstellung "upload_progress_".
session.upload_progress.namestring
Der Name des Schlüssels im $_SESSION-Array, in welchem die Fortschritts-Informationen gespeichert werden sollen. Siehe auch session.upload_progress.prefix. Falls $_POST[ini_get("session.upload_progress.name")] nicht übergeben wird oder nicht verfügbar ist, wird kein Upload-Fortschritt aufgezeichnet. Grundeinstellung "PHP_SESSION_UPLOAD_PROGRESS".
session.upload_progress.freqmixed
Definiert, wie oft die Fortschritts-Information aktualisiert werden soll. Dieser Wert kann entweder in Bytes (d. h. Aktualisierung nachdem eine bestimmte Anzahl an Bytes empfangen wurde) oder in Prozent (d. h. Aktualisierung nachdem eine bestimmte Prozentzahl der gesamten Dateigröße empfangen wurde) angegeben werden. Grundeinstellung "1%".
session.upload_progress.min_freqint
Die Zeit, die mindestens zwischen zwei Aktualisierungen vergehen muss. Grundeinstellung "1" (eine Sekunde).
session.lazy_writebool
Falls session.lazy_write auf 1 gesetzt ist, werden Daten nur gespeichert, nachdem sie sich geändert haben. Grundeinstellung 1 (aktiviert).

Der Upload-Fortschritt wird nur aufgezeichnet, wenn session.upload_progress.enabled aktiviert ist und die Variable $_POST[ini_get("session.upload_progress.name")] gesetzt ist. Siehe Session-Upload Fortschritt für weitere diesbezügliche Informationen.

To Top