Start · Sprachen · PHP · Referenz · getmyuid

getmyuid

Funktion

Gibt die numerische User-ID (UID) des Besitzers des aktuell ausgeführten PHP-Skripts zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

getmyuid(): int|false

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

Typ
int|false
Beschreibung
Gibt die numerische User-ID (UID) des Dateibesitzers des Skripts als 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;
}
Die UID des Skript-Besitzers ist: 1000

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;
}
Skript-Besitzer: www-data (UID: 33)

// 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.