Start · Sprachen · PHP · Referenz · session_module_name

session_module_name

Funktion

Gibt den Namen des aktuellen Session-Handlers (Moduls) zurück und ermöglicht es optional, einen neuen Handler zu setzen.

seit PHP 4.0.1 Kategorie: http

Signatur

session_module_name(string $module = ?): string|false

Beschreibung

session_module_name() liest den Namen des derzeit aktiven Session-Speicher-Moduls aus oder setzt ihn auf einen neuen Wert. Das Session-Modul bestimmt, wo und wie PHP die Session-Daten persistiert – typischerweise files (Standard), memcache, redis oder ein benutzerdefiniertes Modul.

Wird kein Parameter übergeben, liefert die Funktion lediglich den Namen des aktuell konfigurierten Moduls zurück. Wird ein Modulname als Argument angegeben, wechselt PHP zum angegebenen Handler und gibt den vorherigen Modulnamen zurück. Das Setzen des Moduls ist nur möglich, bevor session_start() aufgerufen wird.

Alternativ kann das Session-Modul über die php.ini-Direktive session.save_handler konfiguriert werden. session_module_name() ist nützlich, wenn das Modul zur Laufzeit – etwa abhängig von der Umgebung (Entwicklung, Produktion) – dynamisch gewählt werden soll.

Für vollständig eigene Speicher-Logik sollte stattdessen session_set_save_handler() eingesetzt werden, das eine eigene Implementierung des SessionHandlerInterface erlaubt.

Parameter

Name Typ Default Beschreibung
$module string Name des zu setzenden Session-Moduls, z. B. files, memcache oder redis. Wird der Parameter weggelassen, ändert sich das aktive Modul nicht.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Namen des aktuell (bzw. zuvor) aktiven Session-Moduls als Zeichenkette zurück. Im Fehlerfall – etwa wenn das angegebene Modul nicht verfügbar ist – wird false zurückgegeben.

Beispiele

Aktuelles Session-Modul auslesen

<?php
// Gibt das in php.ini konfigurierte oder bisher gesetzte Modul aus
$modul = session_module_name();
echo 'Aktives Session-Modul: ' . $modul;
// Typische Ausgabe: files
Aktives Session-Modul: files

Session-Modul zur Laufzeit wechseln

<?php
// Vor session_start() das Modul wechseln
$vorherig = session_module_name('redis');
echo 'Vorheriges Modul: ' . $vorherig . PHP_EOL;
echo 'Neues Modul: ' . session_module_name() . PHP_EOL;

// Nun erst die Session starten – Redis wird als Speicher genutzt
ini_set('session.save_path', 'tcp://127.0.0.1:6379');
session_start();

$_SESSION['benutzer'] = 'Maria';
echo 'Session gestartet mit Modul: redis';
Vorheriges Modul: files Neues Modul: redis Session gestartet mit Modul: redis

Umgebungsabhängiges Session-Modul wählen

<?php
// Abhängig von der Umgebungsvariable das passende Modul wählen
$umgebung = getenv('APP_ENV') ?: 'development';

if ($umgebung === 'production') {
    session_module_name('redis');
    ini_set('session.save_path', 'tcp://redis-server:6379');
} else {
    // Entwicklungsumgebung: Standard-Dateibasierter Handler
    session_module_name('files');
}

session_start();
echo 'Verwendetes Session-Modul: ' . session_module_name();
Verwendetes Session-Modul: files

// Wichtig · Fallstricke

Reihenfolge beachten: session_module_name() muss vor session_start() aufgerufen werden, da das Modul nach dem Start einer Session nicht mehr gewechselt werden kann.

Benutzerdefinierte Handler: Wenn ein eigener Session-Handler via session_set_save_handler() registriert wurde, zeigt session_module_name() den Wert user an. Ein erneutes Setzen über session_module_name() würde den benutzerdefinierten Handler überschreiben.

Verfügbare Module: Welche Module installiert und verfügbar sind, hängt von der PHP-Konfiguration und den installierten Erweiterungen ab. Das Angeben eines nicht vorhandenen Modulnamens führt zu einem Fehler.