Signatur
Beschreibung
xattr_list() liest alle erweiterten Attribute (Extended Attributes, kurz xattrs) einer Datei oder eines Verzeichnisses aus dem Dateisystem und gibt deren Namen als Array zurück. Erweiterte Attribute sind Schlüssel-Wert-Paare, die im Dateisystem direkt an Dateien oder Verzeichnisse angehängt werden können, ohne den eigentlichen Dateiinhalt zu verändern.
Die Funktion gehört zur xattr-PECL-Erweiterung und setzt ein Dateisystem voraus, das erweiterte Attribute unterstützt (z. B. ext2/ext3/ext4 mit Option user_xattr, XFS, Btrfs oder HFS+ unter macOS). Der aufrufende Prozess benötigt ausreichende Leserechte auf die Datei.
Mit dem optionalen Parameter $flags kann gesteuert werden, welcher Namensraum verwendet wird: Standardmäßig wird der user-Namensraum verwendet (XATTR_USER). Mit XATTR_ROOT (erfordert Root-Rechte) kann auf den trusted-Namensraum zugegriffen werden.
Das Ergebnis-Array enthält ausschließlich die Namen der Attribute. Um die zugehörigen Werte abzurufen, muss für jeden Namen xattr_get() aufgerufen werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur Datei oder zum Verzeichnis, deren erweiterte Attribute aufgelistet werden sollen. | |
| $flags | int | 0 | Optionale Flags zur Steuerung des Namensraums. Mögliche Werte: XATTR_USER (Standard, user-Namensraum), XATTR_ROOT (trusted-Namensraum, nur für Root). |
Rückgabewert
false bei einem Fehler (z. B. Datei nicht vorhanden, Dateisystem unterstützt keine xattrs oder fehlende Rechte).Beispiele
Alle erweiterten Attribute einer Datei auflisten
<?php
// Voraussetzung: PECL-Erweiterung 'xattr' ist installiert
// und das Dateisystem unterstützt Extended Attributes
$file = '/tmp/beispiel.txt';
file_put_contents($file, 'Testinhalt');
// Zwei Attribute setzen
xattr_set($file, 'user.autor', 'Max Mustermann');
xattr_set($file, 'user.version', '1.0');
// Alle Attributnamen auflisten
$attributes = xattr_list($file);
if ($attributes !== false) {
foreach ($attributes as $name) {
$value = xattr_get($file, $name);
echo $name . ' = ' . $value . PHP_EOL;
}
} else {
echo 'Fehler beim Lesen der erweiterten Attribute.';
}
Erweiterte Attribute prüfen und löschen
<?php
$file = '/tmp/dokument.pdf';
$attributes = xattr_list($file);
if ($attributes === false) {
echo 'Keine erweiterten Attribute abrufbar oder Dateisystem nicht unterstützt.' . PHP_EOL;
} elseif (count($attributes) === 0) {
echo 'Die Datei hat keine erweiterten Attribute.' . PHP_EOL;
} else {
echo 'Gefundene erweiterte Attribute (' . count($attributes) . '):' . PHP_EOL;
foreach ($attributes as $name) {
echo ' - ' . $name . PHP_EOL;
}
// Alle erweiterten Attribute entfernen
foreach ($attributes as $name) {
xattr_remove($file, $name);
}
echo 'Alle erweiterten Attribute wurden entfernt.' . PHP_EOL;
}
// Wichtig · Fallstricke
Plattformabhängigkeit: xattr_list() ist nur auf Betriebssystemen und Dateisystemen verfügbar, die erweiterte Attribute unterstützen (Linux mit ext4/XFS/Btrfs, macOS, FreeBSD). Unter Windows ist die Funktion nicht verfügbar.
Dateisystem-Einbindung: Unter Linux muss das Dateisystem mit der Option user_xattr eingebunden sein (z. B. in /etc/fstab), damit der user-Namensraum nutzbar ist. Andernfalls schlägt die Funktion fehl.
PECL-Erweiterung: Die xattr-Funktionen sind nicht Teil des PHP-Kerns, sondern müssen als PECL-Erweiterung installiert werden (pecl install xattr). Vor der Verwendung sollte mit extension_loaded('xattr') geprüft werden, ob die Erweiterung geladen ist.