W3docs

linkinfo()

La función linkinfo() de PHP devuelve información sobre un enlace duro, incluyendo el identificador de dispositivo donde se almacena el enlace.

¿Qué es la función linkinfo()?

La función linkinfo() es una función integrada de PHP que comprueba si un enlace existe realmente y, en sistemas Unix, devuelve el dispositivo en el que reside. Específicamente, devuelve el campo st_dev de la estructura C stat producida por la llamada al sistema lstat() — un entero que identifica el dispositivo (disco/partición) que contiene el enlace.

En la práctica, linkinfo() es más útil como verificación rápida de existencia: si devuelve 0 o un entero positivo, el enlace existe; si devuelve -1 o false, la ruta falta, está rota o es inaccesible. A pesar del nombre, no devuelve el número de enlaces duros — esa información proviene del elemento nlink de stat() o lstat().

Esta página cubre la sintaxis de la función, los valores de retorno, un ejemplo ejecutable, errores comunes y funciones del sistema de archivos relacionadas.

Sintaxis

linkinfo(string $path): int|false

La función acepta un único parámetro:

  • $path — la ruta al enlace simbólico o duro que desea inspeccionar.

Devuelve:

  • un entero no negativo (el identificador de dispositivo st_dev) cuando el enlace existe,
  • -1 cuando el enlace no puede leerse pero lstat tiene éxito parcialmente, o
  • false si $path no existe o no puede accederse.

Dado que 0 es un valor de retorno válido pero "verdadero-pero-falso" en algunas plataformas, siempre compare con !== false en lugar de depender de una comprobación booleana flexible.

Cómo usar la función linkinfo()

Siga estos pasos:

  1. Especifique la ruta al enlace simbólico o duro que desea comprobar.
  2. Llame a linkinfo() pasando la ruta.
  3. Compare el resultado estrictamente contra false para decidir si el enlace existe.

El siguiente ejemplo crea un archivo real y un enlace simbólico a él, luego inspecciona el enlace con 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);

Una ejecución típica imprime algo como:

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

El identificador de dispositivo exacto depende de su sistema operativo y sistema de archivos, por lo que no lo codifique de forma fija — solo su presencia es significativa. Para la ruta faltante, PHP devuelve false en la mayoría de las plataformas y -1 en algunas compilaciones Unix, por eso el ejemplo trata ambos como "no encontrado."

Errores comunes

  • Windows. linkinfo() no es significativa en Windows y efectivamente solo indica si la ruta es un enlace. Úsela para comprobar existencia, no el número de dispositivo.
  • Use !== false, no !$info. En algunos sistemas un enlace válido devuelve 0, que una comprobación flexible trataría como "faltante."
  • No sigue el enlace. linkinfo() inspecciona el enlace en sí mismo (como lstat), no el archivo al que apunta el enlace. Un enlace simbólico a un destino eliminado sigue reportándose como existente.
  • No sirve para contar enlaces duros. Use stat($path)['nlink'] si necesita el recuento de enlaces duros.

Funciones relacionadas

  • symlink() — crear un enlace simbólico.
  • link() — crear un enlace duro.
  • readlink() — devolver el destino al que apunta un enlace simbólico.
  • is_link() — comprobar si una ruta es un enlace simbólico.
  • lstat() — información de estado completa para un enlace sin seguirlo.

Conclusión

La función linkinfo() es una forma ligera de confirmar que un enlace existe y de leer el dispositivo en el que reside, reflejando el campo st_dev de lstat(). Úsela para verificaciones de existencia (siempre con una comparación estricta !== false), y recurra a stat() o is_link() cuando necesite detalles más completos como el recuento de enlaces duros o el tipo de enlace.

Práctica

Práctica
¿Qué hace la función linkinfo() en PHP?
¿Qué hace la función linkinfo() en PHP?
Was this page helpful?