Signatur
Beschreibung
xattr_supported() ermöglicht es, vor dem Setzen oder Lesen erweiterter Attribute zu prüfen, ob das zugrundeliegende Dateisystem diese Funktion überhaupt unterstützt. Erweiterte Attribute (xattr) erlauben es, beliebige Metadaten als Schlüssel-Wert-Paare an Dateien und Verzeichnisse zu hängen – unabhängig vom eigentlichen Dateiinhalt.
Nicht alle Dateisysteme unterstützen erweiterte Attribute. Während typische Linux-Dateisysteme wie ext2/3/4, XFS, Btrfs oder ReiserFS diese Funktion kennen, fehlt die Unterstützung bei FAT, einigen Netzwerkdateisystemen oder bestimmten temporären Dateisystemen wie tmpfs (je nach Kernel-Konfiguration). Ein präventiver Aufruf von xattr_supported() verhindert Fehler, die andernfalls beim tatsächlichen Zugriff auf die Attribute auftreten würden.
Die Funktion gehört zur PECL-Extension xattr und steht nur auf Systemen zur Verfügung, auf denen diese Extension installiert ist. Sie ist typischerweise nur unter Linux und ähnlichen POSIX-Systemen verfügbar.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur Datei oder zum Verzeichnis, dessen Dateisystem auf xattr-Unterstützung geprüft werden soll. | |
| $flags | int | 0 | Optionale Flags. Mit XATTR_DONTFOLLOW wird einem symbolischen Link nicht gefolgt, sondern der Link selbst geprüft. Standardmäßig wird symbolischen Links gefolgt. |
Rückgabewert
true zurück, wenn das Dateisystem der angegebenen Datei erweiterte Attribute unterstützt, andernfalls false.Beispiele
Einfache Prüfung vor dem Setzen eines erweiterten Attributs
<?php
$datei = '/var/www/html/beispiel.txt';
if (xattr_supported($datei)) {
xattr_set($datei, 'user.kommentar', 'Dieses Dokument ist vertraulich.');
echo "Attribut wurde erfolgreich gesetzt.";
} else {
echo "Das Dateisystem unterstützt keine erweiterten Attribute.";
}
?>
Prüfung ohne Auflösung von symbolischen Links
<?php
$symlink = '/tmp/mein_link';
// Symbolischen Link selbst prüfen, nicht das Ziel
if (xattr_supported($symlink, XATTR_DONTFOLLOW)) {
echo "Der symbolische Link selbst unterstützt erweiterte Attribute.";
} else {
echo "Keine xattr-Unterstützung für den Symlink oder dessen Dateisystem.";
}
?>
// Wichtig · Fallstricke
Voraussetzung: Die PECL-Extension xattr muss installiert und in der php.ini aktiviert sein (extension=xattr.so). Unter Debian/Ubuntu kann sie über pecl install xattr installiert werden.
Plattformabhängigkeit: Die Extension funktioniert nur unter Linux und ähnlichen POSIX-kompatiblen Betriebssystemen. Unter Windows ist sie nicht verfügbar.
Auch wenn xattr_supported() true zurückgibt, können einzelne Operationen trotzdem scheitern – etwa wenn die Dateisystem-Optionen user_xattr beim Einhängen nicht gesetzt wurden oder wenn die Berechtigungen fehlen.