PHP ile __ MACOSX klasör silme?

2 Cevap php

Herkes PHP ile __ MACOSX klasör silme ile herhangi bir deneyim oldu?

Klasör ben bir arşiv fermuarını açıp sonra ortaya çıkmıştır, ama bunu silmek yapmak için görünmüyor olabilir.

Is_dir fonksiyonu (arşiv içinde 'geçici' dosyalar olduğu için) özyinelemeli silme komut başarısız yapma, dosya üzerinde yanlış döndürür böylece dizin boş değil.

Herhangi bir fikir harika olurdu :)


EDIT:

Ben PHP5'ta yerleşik ZipArchive sınıfı (extractTo yöntemi) kullanıyorum.

I istimal rmdir komut ben php.net bulunan (ve üzerinde stackoverflow gördük) biridir:

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

2 Cevap

Ben PHP5 gerektirir http://www.php.net/rmdir üzerindeki işlevinin geliştirilmiş bir sürümü bulundu.

  1. This function uses DIRECTORY_SEPARATOR instead of '/'.
    PHP defines DIRECTORY_SEPARATOR as the proper character for the running OS ('/' or '\').
  2. The Directory Location doesn't need to end with a slash.
  3. The function returns true or false on completion.
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);
}

Hangi işletim sistemi ve sürümü kullanıyorsunuz?


Sen dizin ve dosyaları yolları düzeltmek gerekir.

// 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 );
}