Signatur
Beschreibung
posix_getuid() liefert die reale Benutzer-ID (UID) des Prozesses, unter dem das aktuelle PHP-Script ausgeführt wird. Diese ID entspricht dem Betriebssystem-Benutzer, der den Prozess gestartet hat – im Gegensatz zur effektiven UID, die durch posix_geteuid() abgerufen werden kann.
Die Funktion ist besonders nützlich, wenn ein Script prüfen soll, ob es mit bestimmten Berechtigungen läuft – beispielsweise ob es als Root (UID 0) oder als normaler Benutzer gestartet wurde. Das ist typisch in CLI-Skripten, Daemons oder Deployment-Tools, die unterschiedliches Verhalten je nach ausführendem Benutzer benötigen.
Die zurückgegebene UID kann mit posix_getpwuid() aufgelöst werden, um den zugehörigen Benutzernamen und weitere Informationen aus der Systembenutzerdatenbank zu erhalten. posix_getuid() steht nur auf POSIX-kompatiblen Systemen (Linux, macOS, BSD) zur Verfügung und ist auf Windows nicht verfügbar.
Rückgabewert
0.Beispiele
Reale UID des aktuellen Prozesses ermitteln
<?php
$uid = posix_getuid();
echo "Reale UID des Prozesses: " . $uid . PHP_EOL;
if ($uid === 0) {
echo "Das Script läuft als Root." . PHP_EOL;
} else {
echo "Das Script läuft als normaler Benutzer." . PHP_EOL;
}
UID in Benutzernamen auflösen
<?php
$uid = posix_getuid();
$userInfo = posix_getpwuid($uid);
if ($userInfo !== false) {
echo "Benutzer-ID : " . $uid . PHP_EOL;
echo "Benutzername: " . $userInfo['name'] . PHP_EOL;
echo "Home-Verz. : " . $userInfo['dir'] . PHP_EOL;
echo "Shell : " . $userInfo['shell'] . PHP_EOL;
} else {
echo "Benutzerinformationen konnten nicht ermittelt werden." . PHP_EOL;
}
// Wichtig · Fallstricke
Plattformabhängigkeit: posix_getuid() ist ausschließlich auf POSIX-kompatiblen Systemen verfügbar (Linux, macOS, BSD). Auf Windows ist diese Funktion nicht vorhanden. Prüfe daher vor dem Einsatz mit function_exists('posix_getuid'), ob sie verfügbar ist, wenn dein Code portabel sein soll.
Unterschied zur effektiven UID: Die reale UID gibt an, wer den Prozess ursprünglich gestartet hat. Die effektive UID (posix_geteuid()) kann davon abweichen, etwa wenn das Programm über ein SUID-Bit mit erhöhten Rechten läuft. Für Berechtigungsprüfungen ist daher je nach Anwendungsfall die richtige Funktion zu wählen.
Sicherheitshinweis: Verlasse dich für sicherheitskritische Entscheidungen niemals ausschließlich auf die UID-Prüfung innerhalb des Scripts. Betriebssystem-seitige Berechtigungskonzepte sind robuster und sollten bevorzugt werden.