W3docs

linkinfo()

La fonction linkinfo() est une fonction PHP intégrée qui retourne des informations sur un lien physique et vérifie son existence.

Qu'est-ce que la fonction linkinfo() ?

La fonction linkinfo() est une fonction PHP intégrée qui vérifie si un lien existe réellement et, sur les systèmes Unix, retourne le périphérique sur lequel il réside. Plus précisément, elle retourne le champ st_dev de la structure C stat produite par l'appel système lstat() — un entier qui identifie le périphérique (disque/partition) contenant le lien.

En pratique, linkinfo() est surtout utile comme vérification rapide d'existence : si elle retourne 0 ou un entier positif, le lien existe ; si elle retourne -1 ou false, le chemin est manquant, cassé ou inaccessible. Malgré son nom, elle ne retourne pas le nombre de liens physiques — cette information provient de l'élément nlink de stat() ou lstat().

Cette page couvre la syntaxe de la fonction, les valeurs de retour, un exemple exécutable, les pièges courants et les fonctions de système de fichiers associées.

Syntaxe

linkinfo(string $path): int|false

La fonction prend un seul paramètre :

  • $path — le chemin vers le lien symbolique ou physique que vous souhaitez inspecter.

Elle retourne :

  • un entier non négatif (l'identifiant de périphérique st_dev) lorsque le lien existe,
  • -1 lorsque le lien ne peut pas être lu mais que lstat réussit partiellement, ou
  • false si $path n'existe pas ou ne peut pas être accédé.

Étant donné que 0 est une valeur de retour valide, « vraie-mais-fausse » sur certaines plateformes, comparez toujours avec !== false plutôt que de vous fier à un test booléen souple.

Comment utiliser la fonction linkinfo()

Suivez ces étapes :

  1. Spécifiez le chemin vers le lien symbolique ou physique que vous souhaitez vérifier.
  2. Appelez linkinfo() en passant le chemin.
  3. Comparez strictement le résultat avec false pour déterminer si le lien existe.

L'exemple ci-dessous crée un fichier réel et un lien symbolique vers celui-ci, puis inspecte le lien avec linkinfo() :

<?php

// Set up a file and a symbolic link to it in the temp directory.
$target = tempnam(sys_get_temp_dir(), 'tgt');
$link   = sys_get_temp_dir() . '/example_link';

@unlink($link);            // remove a leftover link from a previous run
symlink($target, $link);   // create the symlink

$info = linkinfo($link);

if ($info !== false) {
    echo "The link '$link' exists. Device id (st_dev): $info" . PHP_EOL;
} else {
    echo "The link '$link' does not exist or is inaccessible." . PHP_EOL;
}

// A path that doesn't exist fails: false on most systems, -1 on some
// Unix builds (a warning may also be emitted), so treat both as "missing".
$missing = @linkinfo('/no/such/link');
var_dump($missing === false || $missing === -1); // bool(true) -> "missing"

// Clean up.
unlink($link);
unlink($target);

Une exécution typique affiche quelque chose comme :

The link '/tmp/example_link' exists. Device id (st_dev): 16777220
bool(true)

L'identifiant de périphérique exact dépend de votre système d'exploitation et de votre système de fichiers, donc ne le codez pas en dur — seule sa présence est significative. Pour le chemin manquant, PHP retourne false sur la plupart des plateformes et -1 sur certaines versions Unix, c'est pourquoi l'exemple traite les deux comme « introuvable ».

Pièges courants

  • Windows. linkinfo() n'est pas significative sur Windows et indique seulement si le chemin est un lien. Utilisez-la pour vérifier l'existence, pas le numéro de périphérique.
  • Utilisez !== false, pas !$info. Sur certains systèmes, un lien valide retourne 0, qu'une vérification souple traiterait comme « manquant ».
  • Elle ne suit pas le lien. linkinfo() inspecte le lien lui-même (comme lstat), pas le fichier vers lequel pointe le lien. Un lien symbolique vers une cible supprimée est toujours signalé comme existant.
  • Pas pour compter les liens physiques. Utilisez stat($path)['nlink'] si vous avez besoin du nombre de liens physiques.

Fonctions associées

  • symlink() — créer un lien symbolique.
  • link() — créer un lien physique.
  • readlink() — retourner la cible vers laquelle pointe un lien symbolique.
  • is_link() — tester si un chemin est un lien symbolique.
  • lstat() — informations de statut complètes pour un lien sans le suivre.

Conclusion

La fonction linkinfo() est un moyen léger de confirmer qu'un lien existe et de lire le périphérique sur lequel il réside, reflétant le champ st_dev de lstat(). Utilisez-la pour les vérifications d'existence (toujours avec une comparaison stricte !== false), et faites appel à stat() ou is_link() lorsque vous avez besoin de détails plus riches tels que le nombre de liens physiques ou le type de lien.

Pratique

Pratique
Que fait la fonction linkinfo() en PHP ?
Que fait la fonction linkinfo() en PHP ?
Was this page helpful?