ftp_close()
La fonction ftp_close() ferme une connexion FTP active en PHP et libère la session côté serveur. Apprenez la syntaxe et les bonnes pratiques.
Ce que fait ftp_close()
ftp_close() ferme une connexion FTP active que vous avez précédemment ouverte avec ftp_connect() (ou ftp_ssl_connect()). Elle libère le socket réseau et la session côté serveur afin qu'aucun des deux côtés ne maintienne la connexion ouverte plus longtemps que nécessaire.
Vous l'appelez une fois que vous avez terminé le transfert de fichiers — après toute opération ftp_get(), ftp_put() ou ftp_nlist(). La fonction retourne true en cas de succès et false en cas d'échec.
PHP ferme la connexion FTP automatiquement à la fin du script, donc un
ftp_close()oublié ne laissera pas de socket ouvert indéfiniment. L'appeler explicitement reste important dans les scripts de longue durée (workers, consommateurs de file d'attente, boucles qui ouvrent de nombreuses connexions), où vous souhaitez libérer la session serveur immédiatement plutôt qu'attendre la fin du script.
Syntaxe
ftp_close(FTP\Connection $ftp): bool| Paramètre | Description |
|---|---|
$ftp | Le handle de connexion retourné par ftp_connect() ou ftp_ssl_connect(). |
Depuis PHP 8.1, le handle est un objet
FTP\Connection. Dans PHP 8.0 et antérieur, c'était uneresource. Vous l'utilisez de la même manière dans les deux versions — vous ne l'inspectez jamais directement, vous le transmettez simplement aux fonctionsftp_*.
Utilisation de base
Un cycle complet connexion → authentification → travail → fermeture ressemble à ceci :
<?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);L'idée clé : chaque ftp_connect() devrait être associée à un ftp_close(), tout comme chaque fichier ouvert devrait être fermé.
Vérifier la valeur de retour
ftp_close() retourne un boolean, vous pouvez donc confirmer que la connexion a été libérée proprement :
<?php
if (ftp_close($ftp)) {
echo "Connection closed successfully.\n";
} else {
echo "Failed to close the connection.\n";
}Fermeture sécurisée avec try/finally
Si une opération entre la connexion et la fermeture lève une exception ou se termine prématurément, la ligne ftp_close() peut ne jamais s'exécuter. Encapsuler le travail dans un bloc try/finally garantit que la connexion est fermée même en cas d'erreur :
<?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);
}C'est le modèle recommandé pour le code en production : le bloc finally est le seul endroit responsable de la libération de la connexion.
Erreurs courantes
- Utiliser le handle après l'avoir fermé. Une fois
ftp_close()exécuté, le handle est invalide. Tout appel ultérieur àftp_*sur celui-ci échouera. - Passer un handle invalide. Si
ftp_connect()a échoué, il retournefalseet non une connexion. Appelerftp_close(false)lève unTypeErroren PHP 8. Vérifiez la connexion avant de l'utiliser. - L'appeler sans paramètre.
ftp_close()requiert le handle de connexion ; il n'y a pas de valeur par défaut.
Résumé
ftp_close() termine une session FTP ouverte par ftp_connect() et retourne true en cas de succès. Bien que PHP ferme la connexion à la fin du script, appeler ftp_close() explicitement — idéalement dans un bloc finally — maintient les scripts de longue durée propres et libère la session serveur dès que le travail est terminé. Pour explorer le reste du flux de travail, consultez ftp_connect(), ftp_login() et ftp_put().