Signatur
Beschreibung
posix_getpwuid() liest den Benutzer-Datensatz aus der Systemdatenbank (typischerweise /etc/passwd oder einem verknüpften Verzeichnisdienst wie LDAP/NIS) und gibt ihn als assoziatives Array zurück. Die Funktion ist äquivalent zur C-Funktion getpwuid() und steht nur auf POSIX-kompatiblen Betriebssystemen (Linux, macOS, BSD) zur Verfügung.
Das zurückgegebene Array enthält die Schlüssel name (Benutzername), passwd (Passwort-Hash, oft x), uid (numerische Benutzer-ID), gid (primäre Gruppen-ID), gecos (zusätzliche Informationen wie Klartextname), dir (Home-Verzeichnis) und shell (Standard-Shell).
Typische Einsatzgebiete sind Berechtigungsprüfungen, das Auflösen von UIDs zu lesbaren Benutzernamen in Protokolldateien oder das Ermitteln von Heimverzeichnissen und Shells in Verwaltungsskripten. Zusammen mit posix_getuid() oder posix_geteuid() lässt sich der aktuell ausführende Benutzer ermitteln und auflösen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $user_id Pflicht | int | Die numerische Benutzer-ID (UID), zu der die Benutzerinformationen abgerufen werden sollen. Üblicherweise eine nicht-negative ganze Zahl, z. B. 0 für root. |
Rückgabewert
name, passwd, uid, gid, gecos, dir und shell zurück. Existiert kein Benutzer mit der angegebenen UID oder tritt ein Fehler auf, wird false zurückgegeben.Beispiele
Aktuelle Benutzerinformationen ermitteln
<?php
// UID des aktuell ausführenden Prozesses ermitteln
$uid = posix_getuid();
$info = posix_getpwuid($uid);
if ($info !== false) {
echo 'Benutzername: ' . $info['name'] . PHP_EOL;
echo 'UID: ' . $info['uid'] . PHP_EOL;
echo 'Primäre GID: ' . $info['gid'] . PHP_EOL;
echo 'Home-Verzeichnis:' . $info['dir'] . PHP_EOL;
echo 'Shell: ' . $info['shell'] . PHP_EOL;
} else {
echo 'Benutzer nicht gefunden.';
}
UID aus Datei-Metadaten in Benutzernamen umwandeln
<?php
$datei = '/etc/hostname';
$stat = stat($datei);
if ($stat !== false) {
$uid = $stat['uid'];
$info = posix_getpwuid($uid);
if ($info !== false) {
printf("Die Datei '%s' gehört dem Benutzer '%s' (UID %d).\n",
$datei,
$info['name'],
$info['uid']
);
} else {
echo "Kein Benutzer zur UID {$uid} gefunden.\n";
}
}
// Wichtig · Fallstricke
Plattformabhängigkeit: posix_getpwuid() ist nur auf POSIX-kompatiblen Systemen verfügbar. Unter Windows steht die Funktion nicht zur Verfügung; ein Aufruf führt zu einem fatalen Fehler. Das PHP-Modul posix muss aktiviert sein (Standard bei den meisten Linux-Installationen).
Sicherheit: Die Funktion liest lediglich öffentlich zugängliche Benutzerinformationen; sensible Passwort-Hashes befinden sich in der Regel in /etc/shadow und sind über diesen Weg nicht zugänglich. Vertraue dem Feld passwd nicht als Prüfmerkmal.
Rückgabewert prüfen: Bei ungültigen oder sehr großen UIDs gibt die Funktion false zurück. Prüfe den Rückgabewert immer mit === false, da ein Array mit UID 0 ansonsten fälschlicherweise als falsy interpretiert werden könnte.