Frage

Hat jemand Erfahrung mit dem Löschen des __MACOSX Ordner mit PHP hatte?

Der Ordner erzeugt wurde, nachdem ich ein Archiv entpackt, aber ich kann es nicht lösche erscheinen.

Die is_dir Funktion false zurück auf die Datei, die rekursive Lösch Skripte machen scheitern (weil im Archiv ist die ‚Temp‘ Dateien), so wird das Verzeichnis nicht leer ist.

Ich bin mit dem eingebauten in ZipArchive Klasse (extractTo-Methode) in PHP5.

Das rmdir Skript Ich verwende ist, den ich auf php.net gefunden:

<?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 );
}
?> 
War es hilfreich?

Lösung

fand ich eine verbesserte Version der Funktion von http://www.php.net/rmdir, die PHP5 erfordert.

  • Diese Funktion verwendet DIRECTORY_SEPARATOR statt /. PHP definiert DIRECTORY_SEPARATOR als die richtigen Zeichen für das Betriebssystem O ( '/' oder '\').
  • Das Verzeichnis Standort muss nicht mit einem Schrägstrich zu Ende.
  • Die Funktion gibt true oder false nach Abschluss.
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);
}

Andere Tipps

Welche OS und Version verwenden Sie?


Sie müssen die Pfade in das Verzeichnis und Dateien korrigieren.

// 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 );
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top