Signatur
Beschreibung
linkinfo() liest Informationen über einen symbolischen Link (Symlink) unter dem angegebenen Pfad und gibt das Feld st_dev der stat-Struktur zurück – also die Gerätenummer des Dateisystems, auf dem der Link selbst liegt. Die Funktion basiert intern auf dem POSIX-Systemaufruf lstat().
Der typische Einsatzfall ist die Prüfung, ob ein symbolischer Link überhaupt existiert und erreichbar ist: Gibt die Funktion einen Wert größer als 0 zurück, ist der Link vorhanden; gibt sie 0 zurück, existiert er nicht, und bei einem Fehler wird false geliefert.
Im Gegensatz zu stat(), das dem Link folgt und Informationen über das Ziel liefert, arbeitet linkinfo() direkt auf dem Link selbst. Auf Windows-Systemen ist die Funktion nicht verfügbar und führt zu einem Fehler.
- Nützlich in Unix/Linux-Umgebungen zur schnellen Link-Existenzprüfung.
- Für vollständige Metadaten eines Symlinks eignet sich
lstat()besser.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $path Pflicht | string | Pfad zum symbolischen Link, über den Informationen abgerufen werden sollen. |
Rückgabewert
st_dev) des Dateisystems als ganzzahligen Wert zurück. Gibt 0 zurück, wenn der Link nicht existiert, und false bei einem Fehler (z. B. ungültiger Pfad oder fehlende Berechtigungen).Beispiele
Prüfen, ob ein symbolischer Link existiert
<?php
$link = '/tmp/mein_symlink';
// Zuerst einen Symlink erstellen (nur zur Demo)
symlink('/etc/hostname', $link);
$info = linkinfo($link);
if ($info > 0) {
echo "Symlink existiert auf Gerät: " . $info . PHP_EOL;
} elseif ($info === 0) {
echo "Symlink existiert nicht." . PHP_EOL;
} else {
echo "Fehler beim Abrufen der Link-Informationen." . PHP_EOL;
}
// Aufräumen
unlink($link);
Unterschied zwischen linkinfo und stat bei Symlinks
<?php
$target = '/tmp/zieldatei.txt';
$link = '/tmp/mein_link.txt';
file_put_contents($target, 'Inhalt');
symlink($target, $link);
// linkinfo liefert Gerät des Links selbst
$geraet = linkinfo($link);
echo "linkinfo (Gerät des Links): " . $geraet . PHP_EOL;
// lstat liefert vollständige Infos zum Link selbst
$lstatInfo = lstat($link);
echo "lstat st_dev: " . $lstatInfo['dev'] . PHP_EOL;
echo "lstat st_ino: " . $lstatInfo['ino'] . PHP_EOL;
// Aufräumen
unlink($link);
unlink($target);
// Wichtig · Fallstricke
Plattformhinweis: linkinfo() ist ausschließlich auf Unix/Linux-Systemen verfügbar. Unter Windows wird die Funktion nicht unterstützt und erzeugt einen fatalen Fehler. Code, der diese Funktion verwendet, sollte daher nur in Unix-Umgebungen eingesetzt oder mit einer entsprechenden Prüfung abgesichert werden (if (function_exists('linkinfo'))).
Der Rückgabewert 0 bedeutet, dass kein Link gefunden wurde – false hingegen zeigt einen tatsächlichen Fehler an. Diese Unterscheidung ist beim Vergleich mit dem Strict-Equality-Operator (===) zu beachten, da 0 und false bei losem Vergleich (==) beide als falsch gelten würden.