PHP Suppression de fichiers et de répertoires


Exemple

Suppression de fichiers

La fonction unlink supprime un seul fichier et indique si l'opération a réussi.

$filename = '/path/to/file.txt';

if (file_exists($filename)) {
    $success = unlink($filename);
    
    if (!$success) {
         throw new Exception("Cannot delete $filename");
    }
}

Suppression de répertoires avec suppression récursive

D'autre part, les répertoires doivent être supprimés avec rmdir . Cependant, cette fonction ne supprime que les répertoires vides. Pour supprimer un répertoire avec des fichiers, supprimez d'abord les fichiers dans les répertoires. Si le répertoire contient des sous-répertoires, la récursivité peut être nécessaire.

L'exemple suivant analyse les fichiers d'un répertoire, supprime les fichiers / répertoires membres de manière récursive et renvoie le nombre de fichiers (et non de répertoires) supprimés.

function recurse_delete_dir(string $dir) : int {
    $count = 0;

    // ensure that $dir ends with a slash so that we can concatenate it with the filenames directly
    $dir = rtrim($dir, "/\\") . "/";

    // use dir() to list files
    $list = dir($dir);

    // store the next file name to $file. if $file is false, that's all -- end the loop.
    while(($file = $list->read()) !== false) {
        if($file === "." || $file === "..") continue;
        if(is_file($dir . $file)) {
            unlink($dir . $file);
            $count++;
        } elseif(is_dir($dir . $file)) {
            $count += recurse_delete_dir($dir . $file);
        }
    }

    // finally, safe to delete directory!
    rmdir($dir);

    return $count;
}