Laufzeit-Konfiguration
Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.
| Name | Standard | Veränderbar | Changelog |
|---|---|---|---|
| session.save_path | "" | PHP_INI_ALL | |
| session.name | "PHPSESSID" | PHP_INI_ALL | |
| session.save_handler | "files" | PHP_INI_ALL | |
| session.auto_start | "0" | PHP_INI_PERDIR | |
| session.gc_probability | "1" | PHP_INI_ALL | |
| session.gc_divisor | "100" | PHP_INI_ALL | Seit PHP 4.3.2 verfügbar. |
| session.gc_maxlifetime | "1440" | PHP_INI_ALL | |
| session.serialize_handler | "php" | PHP_INI_ALL | |
| session.cookie_lifetime | "0" | PHP_INI_ALL | |
| session.cookie_path | "/" | PHP_INI_ALL | |
| session.cookie_domain | "" | PHP_INI_ALL | |
| session.cookie_secure | "" | PHP_INI_ALL | Seit PHP 4.0.4 verfügbar. |
| session.cookie_httponly | "" | PHP_INI_ALL | Seit PHP 5.2.0 verfügbar. |
| session.use_strict_mode | "0" | PHP_INI_ALL | Seit PHP 5.5.2 verfügbar. |
| session.use_cookies | "1" | PHP_INI_ALL | |
| session.use_only_cookies | "1" | PHP_INI_ALL | Seit PHP 4.3.0 verfügbar. |
| session.referer_check | "" | PHP_INI_ALL | |
| session.entropy_file | "" | PHP_INI_ALL | |
| session.entropy_length | "0" | PHP_INI_ALL | |
| session.cache_limiter | "nocache" | PHP_INI_ALL | |
| session.cache_expire | "180" | PHP_INI_ALL | |
| session.use_trans_sid | "0" | PHP_INI_ALL | PHP_INI_ALL in PHP <= 4.2.3. PHP_INI_PERDIR in PHP < 5. Seit PHP 4.0.3 verfügbar. |
| session.bug_compat_42 | "1" | PHP_INI_ALL | Seit PHP 4.3.0 verfügbar. Entfernt in PHP 5.4.0. |
| session.bug_compat_warn | "1" | PHP_INI_ALL | Seit PHP 4.3.0 verfügbar. Entfernt in PHP 5.4.0. |
| session.hash_function | "0" | PHP_INI_ALL | Seit PHP 5.0.0 verfügbar. |
| session.hash_bits_per_character | "4" | PHP_INI_ALL | Seit PHP 5.0.0 verfügbar. |
| url_rewriter.tags | "a=href,area=href,frame=src,form=,fieldset=" | PHP_INI_ALL | Seit PHP 4.0.4 verfügbar. |
| session.upload_progress.enabled | "1" | PHP_INI_PERDIR | Seit PHP 5.4.0 verfügbar. |
| session.upload_progress.cleanup | "1" | PHP_INI_PERDIR | Seit PHP 5.4.0 verfügbar. |
| session.upload_progress.prefix | "upload_progress_" | PHP_INI_PERDIR | Seit PHP 5.4.0 verfügbar. |
| session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | PHP_INI_PERDIR | Seit PHP 5.4.0 verfügbar. |
| session.upload_progress.freq | "1%" | PHP_INI_PERDIR | Seit PHP 5.4.0 verfügbar. |
| session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | Seit PHP 5.4.0 verfügbar. |
Das Sessionmanagementsystem 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 benutzt 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 Sie die standardmäßige
files-Routine wählen, 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-Script 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 gesestzt wird, weil der Trenner (;) in der php.ini auch für Kommentare benutzt 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.
WarnungWenn 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.
AchtungWird das optionale Argument N für die Verzeichnisebenen wie oben beschrieben 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 64^3 Verzeichnisse im Dateisystem existieren, was eine große Verschwendung an Speicher und Inodes zur Folge haben kann.
Verwenden Sie N größer als 2 nur, wenn Sie absolut sicher sind, dass Ihre Website so groß ist, dass Sie es benötigen.
Hinweis: Vor PHP 4.3.6 mussten Benutzer von Windows diese Variable ändern, um die Session-Funktionen von PHP nutzen zu können. Es muss ein gültiger Pfad, z.B. c:/temp, angegeben werden.
-
session.namestring - session.name definiert den Namen der Session, der als Cookie-Name verwendet wird. Grundeinstellung PHPSESSID. Siehe auch session_name().
-
session.auto_startboolean - 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 benutzt 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 support kompiliert wurde. php_serialize steht ab PHP 5.5.4. zur Verfügung. 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 aus $_SESSION weder numerische Indizes speichern, noch alphanumerische Indizes, die Sonderzeichen (| und !) enthalten. Verwenden Sie php_serialize um Fehler wegen solcher Indizes am Ende des Skripts zu vermeiden. Grundeinstellung php.
-
session.gc_probabilityinteger - 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_divisorinteger - 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_maxlifetimeinteger -
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).
Hinweis:
Falls sich der Wert von session.gc_maxlifetime in verschiedenen Skripten unterscheidet, aber sie die Sessiondaten an der selben Stelle speichern, löscht das Skript mit dem kleinsten Wert die Daten. Verwenden Sie die Anweisung in diesem Fall zusammen mit der Anweisung session.save_path.
-
session.referer_checkstring - session.referer_check enthält die Zeichenkette, auf die Sie jeden HTTP-Referer überprüfen wollen. Wenn der Referer vom Client gesendet 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 seit PHP 5.3.3 unterstützt. Wenn
session.entropy_length auf einen von Null
verschiedenen Wert gesetzt wird, verwendet PHP die Windows-Zufalls-API
als Entropie-Quelle.
Hinweis: Ab PHP 5.4.0 ist die Grundeinstellung für session.entropy_file /dev/urandom oder /dev/arandom, falls es verfügbar ist. In PHP 5.3.0 ist diese Konfigurationsoption in der Grundeinstellung leer.
-
session.entropy_lengthinteger - session.entropy_length definiert die Anzahl der Bytes, die von der oben spezifizierten Datei gelesen werden. Grundeinstellung 0 (deaktiviert).
-
session.use_strict_modeboolean - 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).
- session.use_cookies definiert, ob das Modul Cookies verwendet, um die Session-ID clientseitig zu speichern. Grundeinstellung 1 (aktiviert).
- session.use_only_cookies definiert, ob das Modul nur Cookies verwendet, um die Session-ID clientseitig zu speichern. Mit Aktivierung dieser Einstellung wird möglichen Angriffen durch Übermittlung von Session-IDs in URLs vorgebeugt. Diese Einstellung wurde in PHP 4.3.0 hinzugefügt. Ab PHP 5.3.0 ist die Grundeinstellung 1 (aktiviert).
-
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_path definiert den Pfad, der im Session-Cookie gesetzt wird. Grundeinstellung /. Siehe auch session_get_cookie_params() und session_set_cookie_params().
- 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_secure definiert, ob Cookies nur über sichere Verbindungen geschickt werden sollen. Grundeinstellung off. Diese Einstellung wurde in PHP 4.0.4 hinzugefügt. Siehe auch session_get_cookie_params() und session_set_cookie_params().
- session.cookie_httponly markiert das Cookie als nur über das HTTP-Protokoll zugänglich. Das bedeutet, dass für Skriptsprachen wie z.B. JavaScript nicht zugänglich ist. Diese Einstellung kann helfen, Identitätsdiebstahl durch XSS-Angriffe zu reduzieren (obwohl es nicht von allen Browsern unterstützt wird).
-
session.cache_limiterstring - session.cache_limiter definiert die Methode der Cacheverwaltung, die bei Session-Seiten benutzt wird. Das kann einer der folgenden Werte sein: nocache, private, private_no_expire oder public. Grundeinstellung nocache. Informationen über die Bedeutung dieser Werte finden Sie in der session_cache_limiter()-Dokumentation.
-
session.cache_expireinteger - 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_sidboolean -
session.use_trans_sid bestimmt ob transparente
SID-Unterstützung aktiviert ist oder nicht. Grundeinstellung
0 (deaktiviert).
Hinweis: URL-basiertes Session-Management hat im Vergleich zu Cookie-basiertem Session-Management zusätzliche Sicherheitsrisiken. Benutzer können zum Beispiel eine URL, die eine aktive Session-ID enthält, per Email an Freunde schicken oder in ihren Bookmarks speichern und immer mit der selben Session-ID auf Ihre Seite zugreifen.
-
session.bug_compat_42boolean - Die PHP-Versionen bis 4.2.3 haben eine undokumentierte Funktion/einen undokumentierten Fehler, der es Ihnen gestattet, eine Session-Variable im globalen Bereich zu initialisieren, obwohl register_globals deaktiviert ist. Ab Version 4.3.0 gibt PHP bei Verwendung dieser Funktion eine Warnung aus, wenn zusätzlich session.bug_compat_warn aktiviert ist. Diese Funktion/dieser Fehler kann durch Deaktivieren dieser Einstellung deaktiviert werden.
-
session.bug_compat_warnboolean - Die PHP-Versionen bis 4.2.3 haben eine undokumentierte Funktion/einen undokumentierten Fehler, der es Ihnen gestattet, eine Session-Variable im globalen Bereich zu initialisieren, obwohl register_globals deaktiviert ist. Ab Version 4.3.0 gibt PHP bei Verwendung dieser Funktion eine Warnung aus, wenn sowohl session.bug_compat_42 als auch session.bug_compat_warn aktiviert sind.
-
session.hash_functionmixed -
session.hash_function gibt Ihnen die Möglichkeit, 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).
Ab PHP 5.3.0 ist es auch möglich, einen der Algorithmen zu bestimmen, die durch die Hash-Erweiterung (falls vorhanden) zur Verfügung stehen, wie z.B. sha512 oder whirlpool. Eine vollständige Liste unterstützter Algorithmen erhalten Sie mit der Funktion hash_algos().
Hinweis:
Diese Einstellung wurde in PHP 5 eingeführt.
-
session.hash_bits_per_characterinteger -
session.hash_bits_per_character gibt Ihnen die
Möglichkeit, 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:
Dies wurde in PHP 5 eingeführt.
-
url_rewriter.tags bestimmt, wenn Unterstützung für
transparente SID aktiviert ist, welche HTML-Tags so umgeschrieben
werden, dass sie die Session-ID beinhalten. Grundeinstellung
a=href,area=href,frame=src,input=src,form=fakeentry,fieldset=
Hinweis: Wenn Sie HTML/XHTML strict-Konformität wollen, müssen Sie den form-Eintrag entfernen und Ihre Formularfelder zwischen <fieldset>-Tags setzen.
-
session.upload_progress.enabledboolean - Aktiviert die Überwachung des Upload-Fortschritts und füllt die entsprechende $_SESSION-Variable. Grundeinstellung 1 (aktiviert).
-
session.upload_progress.cleanupboolean -
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_freqinteger - Die Zeit, die mindestens zwischen zwei Aktualisierungen vergehen muss. Grundeinstellung "1" (eine Sekunde).
Die Konfigurationseinstellung register_globals beeinflusst, wie die Session-Variablen gespeichert und wiederhergestellt werden.
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 Progress für weitere diesbezügliche Informationen.