Script PHP : Supprimer le contenu d'un dossier de manière récursive

Florian Journeau
Florian JOURNEAU 04 Janvier 2021
Catégorie : PHP
Il n'existe pas de fonction native dans PHP pour supprimer le contenu d'un dossier de manière récursive, néanmoins, il est facile d'écrire un script qui le fait.
Je me suis penché dessus récemment et je me le note pour le retrouver facilement par la suite.


    /**
     * Supprime le contenu d'un dossier de manière récursive
     * 
     * @param string $dir Chemin du dossier a supprimer
     * @return void
     */
    function rmdirRecursive($dir) : void
    {
        foreach (glob($dir . "/*") as $item) {
            if (is_dir($item)) {
                rmdirRecursive($item);           
                rmdir($item); 
            } else {
                unlink($item);
            }
        }
    }


On pour supprimer le contenu d'un dossier on fera donc :

rmdirRecursive(__DIR__ . '/tmp/cache');

// Si on veut également supprimer le dossier cache :
rmdir(__DIR__ . '/tmp/cache');