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ètre | Type | Description |
|---|---|---|
$ftp | FTP\Connection | L'identifiant de connexion retourné par ftp_connect() (ou ftp_ssl_connect()). |
$filename | string | Le chemin du fichier à supprimer sur le serveur distant. |
Remarque : Avant PHP 8.1, le premier argument était une
resourceretournée parftp_connect(). À partir de PHP 8.1, il s'agit d'un objetFTP\Connection, mais votre code ne change pas — vous passez toujours simplement la valeur retournée parftp_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, utilisezftp_rmdir()— et le répertoire doit être vide au préalable, donc supprimez son contenu (vous pouvez le lister avecftp_nlist()) avant de le retirer. - Les chemins relatifs dépendent du répertoire courant. Un nom simple comme
report.txtest 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 avecftp_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.