La suppression du dossier __MACOSX avec PHP?
-
21-09-2019 - |
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 );
}
?>
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éfinitDIRECTORY_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
oufalse
à 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 );
}