Start · Sprachen · PHP · Referenz · posix_getgid

posix_getgid

Funktion

Gibt die reale Gruppen-ID (GID) des aktuellen PHP-Prozesses zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

posix_getgid(): int

Beschreibung

posix_getgid() liefert die reale Gruppen-ID (Real Group ID, GID) des aktuellen Prozesses als vorzeichenlose Ganzzahl zurück. Die reale GID ist die primäre Gruppe des Benutzers, unter dem der Prozess gestartet wurde – im Gegensatz zur effektiven GID, die durch posix_getegid() abgefragt werden kann.

Die Funktion ist typischerweise in CLI-Skripten und Systemadministrations-Werkzeugen nützlich, wenn überprüft werden soll, mit welchen Gruppenrechten ein PHP-Prozess läuft. Auf Unix-ähnlichen Systemen (Linux, macOS, BSD) steuert die GID unter anderem den Zugriff auf Dateien und Verzeichnisse.

Die Funktion erfordert die POSIX-Erweiterung, die auf Windows-Systemen nicht verfügbar ist. Im Web-Kontext läuft PHP üblicherweise unter dem Benutzer des Webservers (z. B. www-data), sodass die zurückgegebene GID die Gruppe dieses Systembenutzers widerspiegelt.

Rückgabewert

Typ
int
Beschreibung
Gibt die reale Gruppen-ID (GID) des aktuellen Prozesses als Integer zurück. Der Wert ist immer eine nicht-negative Ganzzahl (z. B. 0 für die Gruppe root).

Beispiele

Reale GID des aktuellen Prozesses ausgeben

<?php
$gid = posix_getgid();
echo "Reale GID des Prozesses: " . $gid . PHP_EOL;

// GID in einen Gruppennamen auflösen
$groupInfo = posix_getgrgid($gid);
if ($groupInfo !== false) {
    echo "Gruppenname: " . $groupInfo['name'] . PHP_EOL;
} else {
    echo "Gruppe nicht gefunden." . PHP_EOL;
}
Reale GID des Prozesses: 33 Gruppenname: www-data

Prüfen, ob der Prozess als root-Gruppe läuft

<?php
if (posix_getgid() === 0) {
    echo "Warnung: Prozess läuft mit root-Gruppenrechten!" . PHP_EOL;
} else {
    $gid = posix_getgid();
    $group = posix_getgrgid($gid);
    echo "Prozess läuft unter Gruppe: " . ($group['name'] ?? $gid) . PHP_EOL;
}
Prozess läuft unter Gruppe: www-data

// Wichtig · Fallstricke

Plattform: posix_getgid() ist ausschließlich auf POSIX-kompatiblen Systemen (Linux, macOS, BSD) verfügbar. Unter Windows steht die POSIX-Erweiterung standardmäßig nicht zur Verfügung; ein Aufruf führt dort zu einem fatalen Fehler.

Reale vs. effektive GID: Zu beachten ist der Unterschied zwischen der realen GID (dieser Funktion) und der effektiven GID (posix_getegid()). Bei Prozessen mit gesetztem SGID-Bit können diese voneinander abweichen.

Um die GID in einen lesbaren Gruppennamen umzuwandeln, empfiehlt sich der Einsatz von posix_getgrgid().