W3docs

ftp_close()

La función ftp_close() es una función integrada de PHP que se usa para cerrar una conexión FTP. Acepta el identificador devuelto por ftp_connect().

Qué hace ftp_close()

ftp_close() cierra una conexión FTP activa que se abrió previamente con ftp_connect() (o ftp_ssl_connect()). Libera el socket de red y la sesión en el servidor para que ninguno de los dos extremos mantenga la conexión abierta más tiempo del necesario.

Se llama una vez que se ha terminado de transferir archivos — después de cualquier operación ftp_get(), ftp_put() o ftp_nlist(). La función devuelve true en caso de éxito y false en caso de error.

PHP cierra la conexión FTP automáticamente cuando el script termina, por lo que un ftp_close() olvidado no dejará un socket abierto indefinidamente. Sin embargo, llamarla de forma explícita sigue siendo importante en scripts de larga duración (workers, consumidores de cola, bucles que abren muchas conexiones), donde se desea liberar la sesión del servidor de inmediato en lugar de esperar a que el script finalice.

Sintaxis

ftp_close(FTP\Connection $ftp): bool
ParámetroDescripción
$ftpEl identificador de conexión devuelto por ftp_connect() o ftp_ssl_connect().

A partir de PHP 8.1 el identificador es un objeto FTP\Connection. En PHP 8.0 y versiones anteriores era un resource. Se usa de la misma manera en ambas versiones — nunca se inspecciona directamente, simplemente se pasa a las funciones ftp_*.

Uso básico

Un ciclo completo de conectar → iniciar sesión → trabajar → cerrar tiene este aspecto:

<?php

// Open a connection to the FTP server
$ftp = ftp_connect('ftp.example.com');

// Authenticate
ftp_login($ftp, 'username', 'password');

// Download a file
ftp_get($ftp, 'local-copy.txt', 'remote-file.txt', FTP_BINARY);

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

La idea clave: cada ftp_connect() debe ir acompañado de un ftp_close(), igual que cada archivo abierto debe cerrarse.

Verificar el valor de retorno

ftp_close() devuelve un boolean, por lo que se puede confirmar que la conexión se liberó correctamente:

<?php

if (ftp_close($ftp)) {
    echo "Connection closed successfully.\n";
} else {
    echo "Failed to close the connection.\n";
}

Cierre seguro con try/finally

Si una operación entre la conexión y el cierre lanza una excepción o sale anticipadamente, la línea ftp_close() puede no ejecutarse nunca. Envolver el trabajo en try/finally garantiza que la conexión se cierre incluso cuando ocurre un error:

<?php

$ftp = ftp_connect('ftp.example.com');

try {
    ftp_login($ftp, 'username', 'password');
    ftp_get($ftp, 'local.txt', 'remote.txt', FTP_BINARY);
    // ... more operations that might fail ...
} finally {
    // Runs whether the try block succeeded or threw
    ftp_close($ftp);
}

Este es el patrón recomendado para código en producción: el bloque finally es el único responsable de liberar la conexión.

Errores comunes

  • Usar el identificador después de cerrarlo. Una vez que se ejecuta ftp_close(), el identificador deja de ser válido. Cualquier llamada posterior a ftp_* con ese identificador fallará.
  • Pasar un identificador inválido. Si ftp_connect() falla, devuelve false, no una conexión. Llamar a ftp_close(false) lanza un TypeError en PHP 8. Compruebe la conexión antes de usarla.
  • Llamarla sin parámetro. ftp_close() requiere el identificador de conexión; no existe valor por defecto.

Resumen

ftp_close() finaliza una sesión FTP abierta por ftp_connect() y devuelve true en caso de éxito. Aunque PHP cierra la conexión al terminar el script, llamar a ftp_close() de forma explícita — idealmente dentro de un bloque finally — mantiene los scripts de larga duración ordenados y libera la sesión del servidor en cuanto el trabajo está terminado. Para explorar el resto del flujo de trabajo, consulte ftp_connect(), ftp_login() y ftp_put().

Práctica

Práctica
¿Cuál es la forma correcta de usar la función ftp_close() en PHP?
¿Cuál es la forma correcta de usar la función ftp_close() en PHP?
Was this page helpful?