Question

Quelqu'un at-il eu une expérience avec la suppression du dossier __MACOSX avec PHP?

Le dossier a été généré après avoir décompressé l'archive, mais je ne peux pas sembler faire le supprimer.

La fonction is_dir retourne false dans le fichier, ce qui rend l'effacement récursif scripts échouent (car dans l'archive sont les fichiers « temp ») de sorte que le répertoire ne soit pas vide.

J'utilise la classe ZipArchive intégrée (méthode extractTo) en PHP5.

Le script rmdir J'utilise est celui que je trouve sur php.net:

<?php
// ensure $dir ends with a slash
function delTree($dir) {
    $files = glob( $dir . '*', GLOB_MARK );
    foreach( $files as $file ){
        if( substr( $file, -1 ) == '/' )
            delTree( $file );
        else
            unlink( $file );
    }
    rmdir( $dir );
}
?> 
Était-ce utile?

La solution

J'ai trouvé une version améliorée de la fonction de http://www.php.net/rmdir qui nécessite PHP5.

  • Cette fonction utilise DIRECTORY_SEPARATOR au lieu de /. PHP définit DIRECTORY_SEPARATOR comme le caractère approprié pour le système d'exploitation en cours d'exécution ( '/' ou '\').
  • Le emplacement du répertoire n'a pas besoin de se terminer par une barre oblique.
  • La fonction retourne true ou false à la fin.
function deleteDirectory($dir) {
    if (!file_exists($dir)) return true;
    if (!is_dir($dir)) return unlink($dir);
    foreach (scandir($dir) as $item) {
        if ($item == '.' || $item == '..') continue;
        if (!deleteDirectory($dir.DIRECTORY_SEPARATOR.$item)) return false;
    }
    return rmdir($dir);
}

Autres conseils

Quel système d'exploitation et la version que vous utilisez?


Vous devez corriger les chemins vers le répertoire et les fichiers.

// ensure $dir ends with a slash
function delTree($dir) {

    foreach( $files as $file ){
        if( substr( $file, -1 ) == '/' )
            delTree( $dir.$file );
        else
            unlink( $dir.$file );
    }
    rmdir( $dir );
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top