Eliminación de carpeta __MACOSX con PHP?
-
21-09-2019 - |
Pregunta
Alguien ha tenido alguna experiencia con la eliminación de la carpeta __MACOSX
con PHP?
La carpeta se genera después de Desabroché un archivo, pero me parece que no puede hacer eliminarlo.
La función is_dir
devuelve false en el archivo, por lo que la eliminación recursiva guiones fallan (porque dentro del archivo es de los archivos temporales ') por lo que el directorio no está vacío.
Estoy usando la clase incorporada ZipArchive (método extractTo) en PHP5.
La secuencia de comandos rmdir que estoy usando es uno que encontré en 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 );
}
?>
Solución
he encontrado una versión mejorada de la función de http://www.php.net/rmdir que requiere PHP5.
- Esta función utiliza
DIRECTORY_SEPARATOR
en lugar de/
. PHP defineDIRECTORY_SEPARATOR
como el personaje adecuado para el sistema operativo en ejecución ( '/' o '\'). - La ubicación del directorio no tiene que finalizar con una barra.
- La función devuelve
true
ofalse
en la terminación.
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); }
Otros consejos
¿Qué sistema operativo y versión está usando?
Es necesario corregir las rutas de acceso al directorio y los archivos.
// 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 );
}