Signatur
Beschreibung
getmyuid() ermittelt die numerische User-ID (UID) des Benutzers, dem die aktuell ausgeführte PHP-Datei auf dem Dateisystem gehört. Dies entspricht dem Eigentümer der Skript-Datei, wie er beispielsweise mit ls -l oder stat() angezeigt wird.
Die Funktion ist vor allem auf Unix-ähnlichen Systemen (Linux, macOS) nützlich, wo Dateien einem Benutzer zugeordnet sind und Zugriffsrechte über UIDs gesteuert werden. Auf Windows-Systemen hat sie keine sinnvolle Entsprechung und gibt dort false zurück.
Typische Einsatzszenarien sind Diagnose-Skripte oder Sicherheitsprüfungen, bei denen festgestellt werden soll, unter welchem Benutzer ein Skript auf dem Server abgelegt ist – etwa um sicherzustellen, dass kein fremder Benutzer das Skript besitzt. Die UID kann mit der Funktion posix_getpwuid() in einen Benutzernamen aufgelöst werden.
Zu beachten ist, dass die UID des Dateibesitzers nicht unbedingt mit der UID übereinstimmt, unter der der PHP-Prozess ausgeführt wird (diese liefert getmyinode() nicht; dafür gibt es posix_geteuid()).
Rückgabewert
int zurück. Bei einem Fehler oder auf nicht unterstützten Plattformen (z. B. Windows) wird false zurückgegeben.Beispiele
UID des Skript-Besitzers ausgeben
<?php
$uid = getmyuid();
if ($uid === false) {
echo 'UID konnte nicht ermittelt werden (z. B. unter Windows).';
} else {
echo 'Die UID des Skript-Besitzers ist: ' . $uid . PHP_EOL;
}
UID in Benutzernamen auflösen (mit POSIX-Erweiterung)
<?php
$uid = getmyuid();
if ($uid !== false && function_exists('posix_getpwuid')) {
$userInfo = posix_getpwuid($uid);
if ($userInfo !== false) {
echo 'Skript-Besitzer: ' . $userInfo['name'] . ' (UID: ' . $uid . ')' . PHP_EOL;
} else {
echo 'Kein Benutzer mit UID ' . $uid . ' gefunden.' . PHP_EOL;
}
} else {
echo 'POSIX-Erweiterung nicht verfügbar oder UID nicht ermittelbar.' . PHP_EOL;
}
// Wichtig · Fallstricke
Plattformabhängigkeit: Die Funktion ist auf Windows-Systemen nicht sinnvoll nutzbar und gibt dort false zurück, da Windows kein klassisches Unix-UID-Konzept besitzt.
Unterschied zur Prozess-UID: getmyuid() liefert die UID des Dateibesitzers, nicht die UID des aktuell laufenden PHP-Prozesses. Für die effektive Prozess-UID steht unter Unix posix_geteuid() zur Verfügung.
Sicherheitshinweis: Verlasse dich nicht allein auf die UID-Prüfung für sicherheitskritische Entscheidungen, da UIDs unter bestimmten Umständen wiederverwendet werden können.