Start · Sprachen · PHP · Referenz · linkinfo

linkinfo

Funktion

Gibt die Gerätenummer (<code>st_dev</code>) des Dateisystems zurück, auf dem sich ein symbolischer Link befindet.

seit PHP 4.0.0 Kategorie: io

Signatur

linkinfo(string $path): int|false

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

Typ
int|false
Beschreibung
Gibt die Gerätenummer (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);
Symlink existiert auf Gerät: 2049

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);
linkinfo (Gerät des Links): 2049 lstat st_dev: 2049 lstat st_ino: 131073

// 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.