W3docs

ftp_rmdir()

La fonction ftp_rmdir() en PHP supprime un répertoire sur un serveur FTP. Découvrez son fonctionnement et des exemples d'utilisation détaillés.

Comprendre la fonction PHP ftp_rmdir()

La fonction ftp_rmdir() est une fonction PHP intégrée qui supprime un répertoire sur un serveur FTP. Dans cet article, nous allons examiner cette fonction en détail et vous fournir un guide complet pour l'utiliser dans vos projets PHP.

Qu'est-ce que ftp_rmdir() ?

La fonction ftp_rmdir() supprime un répertoire sur un serveur FTP. Elle est le pendant de ftp_mkdir(), qui en crée un.

Une contrainte importante : elle ne fonctionne que sur des répertoires vides. Si le répertoire contient encore des fichiers ou des sous-répertoires, l'appel échoue et renvoie false. Pour supprimer un répertoire non vide, vous devez d'abord en effacer le contenu (voir l'exemple récursif ci-dessous).

La fonction prend deux paramètres :

  1. ftp — la connexion FTP renvoyée par ftp_connect() (et authentifiée avec ftp_login()).
  2. directory — le chemin du répertoire à supprimer.

Elle renvoie true en cas de succès et false en cas d'échec.

Syntaxe de ftp_rmdir()

La signature de la fonction ftp_rmdir() est :

ftp_rmdir(FTP\Connection $ftp, string $directory): bool

Les deux paramètres sont obligatoires. Notez qu'à partir de PHP 8.1, la connexion est un objet FTP\Connection ; avant PHP 8.1, c'était une resource. Le paramètre directory est le nom (relatif au répertoire courant) ou le chemin absolu du répertoire à supprimer.

Utilisation de ftp_rmdir()

Pour utiliser la fonction ftp_rmdir(), vous devez d'abord établir une connexion au serveur FTP à l'aide de la fonction ftp_connect(). Voici un exemple complet :

<?php

// Set up an FTP connection
$conn = ftp_connect('ftp.example.com');
if (!$conn) {
    die("Could not connect to FTP server.");
}

// Login with your FTP credentials
if (!ftp_login($conn, 'username', 'password')) {
    die("Login failed.");
}

// Remove the directory
if (ftp_rmdir($conn, '/public_html/testdir')) {
    echo "Directory removed successfully.\n";
} else {
    echo "Directory removal failed. Ensure the directory is empty.\n";
}

// Close the FTP connection
ftp_close($conn);

Étape par étape : nous ouvrons une connexion avec ftp_connect() et la vérifions ; nous nous connectons avec ftp_login() ; nous supprimons le répertoire avec ftp_rmdir() et rapportons le résultat ; puis nous fermons la connexion avec ftp_close().

Suppression récursive d'un répertoire non vide

Étant donné que ftp_rmdir() refuse les répertoires non vides, la suppression d'une arborescence de dossiers implique de supprimer d'abord chaque fichier et sous-répertoire. Vous pouvez lister le contenu avec ftp_nlist(), supprimer les fichiers avec ftp_delete(), et parcourir récursivement les sous-répertoires :

<?php

function ftpRemoveTree($conn, string $dir): bool
{
    // ftp_delete handles files; ftp_rmdir handles (now-empty) directories.
    if (@ftp_delete($conn, $dir)) {
        return true;
    }

    // Not a file — assume it's a directory and clear its contents.
    $items = ftp_nlist($conn, $dir);
    if ($items === false) {
        return false;
    }

    foreach ($items as $item) {
        // Skip the "." and ".." entries some servers return.
        $name = basename($item);
        if ($name === '.' || $name === '..') {
            continue;
        }
        ftpRemoveTree($conn, $item);
    }

    // Directory is empty now, so it can be removed.
    return ftp_rmdir($conn, $dir);
}

Gestion des erreurs dans ftp_rmdir()

Il est important de gérer les erreurs lors de l'utilisation de ftp_rmdir(). Un retour false signifie que la suppression a échoué — le plus souvent parce que le répertoire n'est pas vide, n'existe pas, ou que votre compte ne dispose pas des permissions nécessaires. Vérifiez toujours la valeur de retour plutôt que de supposer le succès :

<?php

if (!ftp_rmdir($conn, '/public_html/testdir')) {
    echo "Failed to remove directory. Ensure it is empty and you have proper permissions.\n";
}

ftp_close($conn);

Fonctions FTP associées

Conclusion

La fonction ftp_rmdir() supprime un répertoire vide sur un serveur FTP, renvoyant true en cas de succès et false en cas d'échec. Pour supprimer un répertoire qui contient encore des fichiers, videz d'abord son contenu — par exemple avec l'assistant récursif présenté ci-dessus. Associée à une vérification rigoureuse de la valeur de retour, elle constitue un bloc de construction fiable pour gérer les structures de répertoires distants depuis PHP.

Practice

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