Signatur
Beschreibung
get_current_user() ermittelt den Benutzernamen des Datei-Eigentümers des aktuell ausgeführten PHP-Skripts – also jenen Betriebssystem-Benutzer, der im Dateisystem als Besitzer der Skriptdatei eingetragen ist. Dies ist nicht zwangsläufig derselbe Benutzer, unter dem der PHP-Prozess (z. B. www-data oder apache) läuft.
Die Funktion wird typischerweise in Diagnose- oder Debugging-Skripten eingesetzt, um Dateiberechtigungsprobleme zu analysieren. Sie kann helfen herauszufinden, warum ein Skript keine Schreibrechte auf bestimmte Verzeichnisse hat, wenn der Prozessbenutzer vom Datei-Eigentümer abweicht.
Auf Unix-/Linux-Systemen liest PHP intern die UID der Skriptdatei aus und löst sie über die Systemfunktion getpwuid() in einen Benutzernamen auf. Unter Windows verhält sich die Funktion abhängig von der Plattform-Implementierung und liefert möglicherweise nicht immer ein sinnvolles Ergebnis.
Um den Benutzer zu ermitteln, unter dem der PHP-Prozess selbst läuft (also der effektive Prozessbenutzer), sollte stattdessen posix_getpwuid(posix_geteuid()) verwendet werden.
Rückgabewert
Beispiele
Datei-Eigentümer des Skripts ausgeben
<?php
$owner = get_current_user();
echo 'Eigentümer dieser Skriptdatei: ' . $owner . PHP_EOL;
// Mögliche Ausgabe unter Linux: Eigentümer dieser Skriptdatei: deploy
Datei-Eigentümer mit Prozessbenutzer vergleichen
<?php
// Eigentümer der Skriptdatei
$fileOwner = get_current_user();
// Benutzer, unter dem der PHP-Prozess läuft (benötigt POSIX-Extension)
$processUser = 'unbekannt';
if (function_exists('posix_geteuid')) {
$info = posix_getpwuid(posix_geteuid());
$processUser = $info['name'] ?? 'unbekannt';
}
echo 'Datei-Eigentümer : ' . $fileOwner . PHP_EOL;
echo 'Prozess-Benutzer: ' . $processUser . PHP_EOL;
if ($fileOwner !== $processUser) {
echo 'Achtung: Datei-Eigentümer und Prozess-Benutzer stimmen nicht überein!' . PHP_EOL;
}
// Wichtig · Fallstricke
Plattformabhängigkeit: Unter Windows kann get_current_user() unzuverlässige oder leere Ergebnisse liefern, da das Windows-Dateisystem-Konzept von Datei-Eigentümerschaft anders implementiert ist als unter Unix-Systemen.
Verwechslungsgefahr: Der Name der Funktion ist irreführend – sie gibt nicht den aktuell eingeloggten Web-Benutzer oder den PHP-Prozessbenutzer zurück, sondern ausschließlich den Dateisystem-Eigentümer der Skriptdatei. Dies führt häufig zu Missverständnissen.
Die Funktion hat keine Abhängigkeit von der POSIX-Extension und ist daher ohne zusätzliche Extensions verfügbar, im Gegensatz zu posix_getpwuid().