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 );
}
?> 
¿Fue útil?

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 define DIRECTORY_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 o false 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 );
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top