2010-05-02 11 views

Répondre

1

Cette fonction supprime un répertoire avec l'ensemble de son contenu. Le second paramètre est booléen pour instruire la fonction si il doit supprimer le répertoire ou seulement le contenu


function rmdir_r ($dir, $DeleteMe = TRUE) 
    { 
     if (! $dh = @opendir ($dir)) return; 
     while (false !== ($obj = readdir ($dh))) 
    { 
    if ($obj == '.' || $obj == '..') continue; 
    if (! @unlink ($dir . '/' . $obj)) rmdir_r ($dir . '/' . $obj, true); 
     } 

    closedir ($dh); 
    if ($DeleteMe) 
     { 
      @rmdir ($dir); 
     } 
    } 
//use like this: 

rmdir_r('abc'); 

0

Essayez quelque chose comme ceci:

function deleteDir($dir) { 
    if (!is_dir($dir)) return unlink($dir); 
    foreach (scandir($dir) as $item) { 
     if ($item == '.' || $item == '..') continue; 
     if (!deleteDir($dir.'/'.$item)) return false; 
    } 
    return rmdir($dir); 
} 

$dir = substr($_SERVER['SCRIPT_FILENAME'], 0, strrpos($_SERVER['SCRIPT_FILENAME'], '/')); 
deleteDir($dir); 
+0

Cela ne fonctionnera probablement pas sur un hôte Windows, car il ne permet pas de supprimer un répertoire ou un fichier s'il est utilisé. Le script aura '$ dir' comme répertoire de travail, et PHP peut garder le script delete.php ouvert pendant l'exécution du script. Au minimum, vous devrez peut-être 'chdir()' loin de $ dir avant d'essayer de distancer le répertoire, et même alors, le fichier delete.php peut garder les choses verrouillées. –

+0

Merci, je n'ai pas de boite Windows, donc je ne l'ai testé que sous Linux. –

Questions connexes