W3docs

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ètreDescription
$ftpLe 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 une resource. Vous l'utilisez de la même manière dans les deux versions — vous ne l'inspectez jamais directement, vous le transmettez simplement aux fonctions ftp_*.

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 retourne false et non une connexion. Appeler ftp_close(false) lève un TypeError en 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().

Pratique

Pratique
Quelle est la bonne façon d'utiliser la fonction ftp_close() en PHP ?
Quelle est la bonne façon d'utiliser la fonction ftp_close() en PHP ?
Was this page helpful?