W3docs

ftp_delete()

La fonction ftp_delete() est une fonction PHP intégrée permettant de supprimer un fichier sur un serveur FTP distant. Elle prend deux paramètres.

La fonction PHP ftp_delete()

ftp_delete() supprime un seul fichier d'un serveur FTP distant. C'est l'équivalent FTP de unlink() sur un système de fichiers local : vous lui passez une connexion FTP ouverte et le chemin du fichier à supprimer, et elle indique si la suppression a réussi.

Cette page couvre la signature de la fonction, sa valeur de retour, un exemple complet, la gestion des erreurs et les pièges courants (suppression de répertoires, chemins relatifs vs absolus, et permissions).

Syntaxe

ftp_delete(FTP\Connection $ftp, string $filename): bool
ParamètreTypeDescription
$ftpFTP\ConnectionL'identifiant de connexion retourné par ftp_connect() (ou ftp_ssl_connect()).
$filenamestringLe chemin du fichier à supprimer sur le serveur distant.

Remarque : Avant PHP 8.1, le premier argument était une resource retournée par ftp_connect(). À partir de PHP 8.1, il s'agit d'un objet FTP\Connection, mais votre code ne change pas — vous passez toujours simplement la valeur retournée par ftp_connect().

Valeur de retour

ftp_delete() retourne :

  • true — le fichier a été supprimé avec succès.
  • false — la suppression a échoué (le fichier n'existe pas, vous manquez de permissions, le chemin est un répertoire, ou la connexion est invalide).

Comme un chemin vide valide ou tout échec remonte comme false, testez toujours le résultat explicitement plutôt que de supposer le succès.

Un exemple complet

Vous ouvrez d'abord une connexion avec ftp_connect(), vous authentifiez avec ftp_login(), supprimez le fichier, puis fermez la session avec ftp_close() :

<?php

// Open an FTP connection (default port 21, 90-second timeout)
$ftp = ftp_connect('ftp.example.com');

if ($ftp === false) {
    exit("Could not connect to the FTP server.\n");
}

// Authenticate
if (!ftp_login($ftp, 'username', 'password')) {
    ftp_close($ftp);
    exit("FTP login failed.\n");
}

// Switch to passive mode — required behind most firewalls/NAT
ftp_pasv($ftp, true);

// Attempt the delete
if (ftp_delete($ftp, '/uploads/old-report.txt')) {
    echo "File deleted successfully.\n";
} else {
    echo "Failed to delete the file.\n";
}

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

Gestion des erreurs

ftp_delete() émet un avertissement PHP et retourne false lorsqu'elle ne peut pas supprimer le fichier. La vérification fiable est la valeur de retour boolean. Utilisez === pour que le résultat ne soit pas confondu avec une valeur de connexion fausse :

<?php

if (ftp_delete($ftp, '/uploads/old-report.txt') === true) {
    echo "Deleted.\n";
} else {
    echo "Delete failed — check the path, permissions, and that it is a file, not a folder.\n";
}

Si vous souhaitez supprimer l'avertissement intégré et afficher votre propre message, préfixez l'appel avec @ :

<?php

if (@ftp_delete($ftp, $remotePath) === false) {
    error_log("ftp_delete failed for: $remotePath");
}

Pièges courants

  • Les répertoires ne sont pas des fichiers. ftp_delete() ne supprime que des fichiers. Pour supprimer un répertoire, utilisez ftp_rmdir() — et le répertoire doit être vide au préalable, donc supprimez son contenu (vous pouvez le lister avec ftp_nlist()) avant de le retirer.
  • Les chemins relatifs dépendent du répertoire courant. Un nom simple comme report.txt est résolu par rapport au répertoire de travail courant du serveur. Préférez les chemins absolus (/uploads/report.txt), ou définissez le répertoire explicitement avec ftp_chdir().
  • Renommer plutôt que supprimer. Si vous avez seulement besoin de déplacer ou d'archiver un fichier, utilisez ftp_rename() plutôt que de supprimer et de re-téléverser.
  • Permissions. La suppression échoue silencieusement (retourne false) lorsque l'utilisateur FTP manque de droits d'écriture/suppression sur le répertoire cible.

Résumé

ftp_delete() supprime un seul fichier sur un serveur FTP distant et retourne un boolean indiquant le succès. Ouvrez et authentifiez la connexion en premier, passez en mode passif pour la compatibilité, vérifiez la valeur de retour explicitement, et utilisez ftp_rmdir() lorsque vous devez supprimer un répertoire. Pour l'ensemble des opérations FTP, consultez la référence PHP FTP.

Practice

Pratique
Quel est le rôle de la fonction ftp_delete() en PHP ?
Quel est le rôle de la fonction ftp_delete() en PHP ?
Was this page helpful?