fileperms
(PHP 4, PHP 5, PHP 7, PHP 8)
fileperms — Liefert die Zugriffsrechte einer Datei
Beschreibung
$filename
): int|falseGibt die Zugriffsrechte für die übergebene Datei zurück.
Parameter-Liste
-
filename
-
Der Pfad zur Datei.
Rückgabewerte
Gibt die Zugriffsrechte einer Datei als numerischen Modus zurück. Die
niedrigen Bits dieses Modus sind die gleichen wie die Zugriffsrechte, die
chmod() erwartet, allerdings beinhaltet der Rückgabewert
auf den meisten Plattformen ebenfalls Informationen über den Typ der Datei,
die als filename
angegeben wurde. Die Beispiele weiter
unten demonstrieren wie der Rückgabewert auf spezifische Zugriffsrechte und
Dateitypen auf POSIX-Systemen einschließlich Linux und macOS geprüft
werden kann.
Für lokale Dateien wird der spezifische st_mode
-Wert der
C-Struktur verwendet, die von der Funktion stat()
zurückgegeben wird. Die betroffenen Bits können sich je nach Plattform
ändern und wenn es erforderlich ist, Bits des Rückgabewertes zu
analysieren, die nicht die Zugriffsrechte betreffen, wird empfohlen, in der
Dokumentation der jeweiligen Plattform nachzuschlagen.
Gibt bei einem Fehler false
zurück.
Fehler/Exceptions
Im Fehlerfall wird eine E_WARNING
ausgegeben.
Beispiele
Beispiel #1 Zeige die Zugriffsrechte als Oktalwert an
<?php
echo substr(sprintf('%o', fileperms('/tmp')), -4);
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
1777 0644
Beispiel #2 Zeige die kompletten Zugriffsrechte an
<?php
$perms = fileperms('/etc/passwd');
switch ($perms & 0xF000) {
case 0xC000: // Socket
$info = 's';
break;
case 0xA000: // Symbolischer Link
$info = 'l';
break;
case 0x8000: // Regulär
$info = 'r';
break;
case 0x6000: // Block special
$info = 'b';
break;
case 0x4000: // Verzeichnis
$info = 'd';
break;
case 0x2000: // Character special
$info = 'c';
break;
case 0x1000: // FIFO pipe
$info = 'p';
break;
default: // unbekannt
$info = 'u';
}
// Besitzer
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
(($perms & 0x0800) ? 's' : 'x' ) :
(($perms & 0x0800) ? 'S' : '-'));
// Gruppe
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
(($perms & 0x0400) ? 's' : 'x' ) :
(($perms & 0x0400) ? 'S' : '-'));
// Andere
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
(($perms & 0x0200) ? 't' : 'x' ) :
(($perms & 0x0200) ? 'T' : '-'));
echo $info;
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
-rw-r--r--
Anmerkungen
Hinweis: Die Ergebnisse dieser Funktion werden zwischengespeichert. Weitere Details sind bei clearstatcache() zu finden.
Seit PHP 5.0.0 kann diese Funktion mit einigen URL-Wrappern benutzt werden. Schauen Sie in der Liste unter Unterstützte Protokolle und Wrapper nach, welcher Wrapper die Funktionalität von stat() unterstützt.
Siehe auch
- chmod() - Ändert den Modus für die Zugriffsrechte einer Datei
- is_readable() - Prüft, ob eine Datei existiert und lesbar ist
- stat() - Sammelt Informationen über eine Datei