W3docs

ftp_pwd()

La función ftp_pwd() de PHP devuelve el directorio actual de la conexión FTP. En este artículo se explica su uso.

La función PHP ftp_pwd() devuelve el directorio de trabajo actual de una conexión FTP abierta — equivalente a escribir pwd ("print working directory") en un cliente FTP. Esta página explica qué devuelve la función, cómo llamarla correctamente en las distintas versiones de PHP y cómo encaja en una sesión FTP típica.

Qué hace ftp_pwd()

Después de conectarse e iniciar sesión en un servidor FTP, el servidor mantiene un registro del "directorio actual" de tu sesión. A medida que te mueves con ftp_chdir() o ftp_cdup(), esa ubicación cambia. ftp_pwd() te indica dónde te encuentras actualmente, devolviendo la ruta absoluta como string.

Esto resulta útil principalmente para:

  • Registro o depuración — confirmar que has llegado al directorio esperado tras iniciar sesión.
  • Guardar y restaurar una ubicación: captura la ruta con ftp_pwd(), cambia de directorio para realizar algún trabajo y luego regresa con ftp_chdir().
  • Construir rutas para subidas/descargas relativas a la ubicación actual del servidor.

Sintaxis

ftp_pwd(FTP\Connection $ftp): string|false

Acepta un único argumento:

Devuelve el directorio actual como string si tiene éxito, o false si falla.

Nota de versión: En PHP 8.1 y versiones posteriores, la conexión es un objeto FTP\Connection. En PHP 7.x y anteriores, las funciones FTP usaban un resource en su lugar — el código de llamada es idéntico, solo cambia el tipo de $ftp. El código escrito para versiones anteriores sigue funcionando sin modificaciones.

Uso básico

Debes conectarte e iniciar sesión antes de llamar a ftp_pwd():

<?php

// Open an FTP connection
$ftp = ftp_connect('ftp.example.com');

// Log in with your credentials
ftp_login($ftp, 'username', 'password');

// Ask the server where we are
$current = ftp_pwd($ftp);

echo "Current directory: $current\n"; // e.g. "Current directory: /"

// Always close the connection when done
ftp_close($ftp);

Inmediatamente después de iniciar sesión, la mayoría de los servidores te colocan en el directorio de inicio de la cuenta, por lo que la primera llamada a ftp_pwd() suele devolver / o algo como /home/username.

Rastrear tu ubicación al cambiar de directorios

El valor que devuelve ftp_pwd() refleja cada paso de navegación. Combinado con ftp_chdir(), te permite confirmar que un movimiento se realizó correctamente:

<?php

$ftp = ftp_connect('ftp.example.com');
ftp_login($ftp, 'username', 'password');

echo ftp_pwd($ftp) . "\n";        // /

ftp_chdir($ftp, 'public_html');
echo ftp_pwd($ftp) . "\n";        // /public_html

ftp_chdir($ftp, 'images');
echo ftp_pwd($ftp) . "\n";        // /public_html/images

ftp_close($ftp);

Guardar y restaurar el directorio de trabajo

Un patrón habitual es recordar dónde estás, realizar trabajo en otro lugar y luego volver:

<?php

$ftp = ftp_connect('ftp.example.com');
ftp_login($ftp, 'username', 'password');

// Remember the starting point
$home = ftp_pwd($ftp);

// Move into a subfolder and upload a file
ftp_chdir($ftp, 'uploads');
ftp_put($ftp, 'report.pdf', '/tmp/report.pdf', FTP_BINARY);

// Go back to where we started
ftp_chdir($ftp, $home);

ftp_close($ftp);

Manejo de errores

ftp_pwd() devuelve false si la conexión no es válida o si el servidor rechaza la solicitud. Dado que un string vacío también es falsy, utiliza una comprobación estricta === false en lugar de !$current:

<?php

$ftp = ftp_connect('ftp.example.com');
ftp_login($ftp, 'username', 'password');

$current = ftp_pwd($ftp);

if ($current === false) {
    echo "Failed to get the current directory.\n";
} else {
    echo "You are in: $current\n";
}

ftp_close($ftp);

Ten en cuenta que ftp_connect() devuelve false si no puede alcanzar el host, por lo que en código de producción debes verificar los resultados de la conexión y del inicio de sesión antes de llamar a ftp_pwd().

Funciones relacionadas

Práctica

Práctica
¿Cuál es el rol de la función ftp_pwd en PHP?
¿Cuál es el rol de la función ftp_pwd en PHP?
Was this page helpful?