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ámetro | Descripción |
|---|---|
$ftp | El 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 unresource. Se usa de la misma manera en ambas versiones — nunca se inspecciona directamente, simplemente se pasa a las funcionesftp_*.
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 aftp_*con ese identificador fallará. - Pasar un identificador inválido. Si
ftp_connect()falla, devuelvefalse, no una conexión. Llamar aftp_close(false)lanza unTypeErroren 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().