Signatur
Beschreibung
filegroup() liest die Gruppen-ID (GID) einer Datei aus dem Dateisystem aus und gibt diese als Integer zurück. Die Funktion ist nützlich, wenn geprüft werden soll, welcher Gruppe eine Datei auf einem Unix/Linux-System gehört – beispielsweise zur Berechtigungsprüfung oder zur Administration.
Um die GID in einen lesbaren Gruppennamen umzuwandeln, kann die Funktion posix_getgrgid() verwendet werden. Diese Kombination ist typisch bei serverseitigen Skripten, die Dateiverwaltung oder Zugriffskontrolle übernehmen.
Achtung: Die Funktion steht nur auf Unix-ähnlichen Systemen (Linux, macOS etc.) zur Verfügung. Unter Windows liefert sie immer 0. Zudem werden Ergebnisse intern gecacht; nach Änderungen an der Datei sollte clearstatcache() aufgerufen werden, um veraltete Werte zu vermeiden.
Die Funktion folgt symbolischen Links und gibt die Gruppe der verlinkten Zieldatei zurück. Für den Link selbst kann lstat() herangezogen werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur Datei, deren Gruppen-ID ermittelt werden soll. Kann ein relativer oder absoluter Pfad sein. |
Rückgabewert
int zurück. Im Fehlerfall (z. B. Datei nicht gefunden, fehlende Leserechte) wird false zurückgegeben und ein Fehler der Stufe E_WARNING ausgelöst.Beispiele
GID einer Datei ermitteln und in Gruppenname umwandeln
<?php
$datei = '/var/www/html/index.php';
$gid = filegroup($datei);
if ($gid === false) {
echo "Fehler: Gruppe konnte nicht ermittelt werden.\n";
} else {
echo "Gruppen-ID: " . $gid . "\n";
// Gruppenname per POSIX-Funktion ermitteln
if (function_exists('posix_getgrgid')) {
$gruppeninfo = posix_getgrgid($gid);
echo "Gruppenname: " . ($gruppeninfo['name'] ?? 'unbekannt') . "\n";
}
}
Gruppen-ID nach Dateiänderung neu einlesen (Cache leeren)
<?php
$datei = '/tmp/testdatei.txt';
// Erste Abfrage
$gid1 = filegroup($datei);
echo "Vor Änderung – GID: " . $gid1 . "\n";
// Angenommen, die Gruppe wurde extern geändert (z. B. via chgrp)
// clearstatcache() sorgt dafür, dass der interne Stat-Cache geleert wird
clearstatcache(true, $datei);
$gid2 = filegroup($datei);
echo "Nach Cache-Leerung – GID: " . $gid2 . "\n";
// Wichtig · Fallstricke
Plattformabhängigkeit: filegroup() ist nur auf Unix-ähnlichen Systemen sinnvoll nutzbar. Unter Windows gibt die Funktion stets 0 zurück, ohne einen Fehler auszulösen.
Stat-Cache: PHP cached intern die Ergebnisse von Dateisystemfunktionen. Wenn sich die Gruppenzugehörigkeit einer Datei während der Laufzeit des Skripts ändert, muss clearstatcache() aufgerufen werden, um aktuelle Werte zu erhalten.
Berechtigungen: Das ausführende Skript benötigt Lesezugriff auf die Metadaten der Datei (execute-Bit auf dem übergeordneten Verzeichnis genügt in der Regel), andernfalls schlägt die Funktion fehl.