2009-08-18 18 views

cevap

47

Eh, her zaman kullanılabilir

system('/bin/rm -rf ' . escapeshellarg($dir)); 

var.

+8

bulunan sembolik bağlantılar dizinleri içeriğini silerek önler tarafından php yorumların yer alan fonksiyon Ancak bu Windows sunucu üzerinde çalışmaz. – Raza

+4

@KashifRaza: Doğru. Bu nedenle "uygun olduğu yerde". – chaos

+0

Windows'da bunu kullanın: sistemi ('rd/Q/S "'. $ Dir. '"'); – ddelrio1986

2

Kaynak: this Kaynak; Bir dizini temizlemek veya silmek istiyorsanız ve pencerede iseniz, biraz zaman kazanın.

Kullanım Bu:

chdir ($file_system_path); 
    exec ("del *.* /s /q"); 

diğer DEL sözdizimi veya başka bir kabuk util kullanabilirsiniz. Hizmetin masaüstüyle etkileşime girmesine izin vermelisiniz, çünkü şu anki ayarım var ve bunu test etmek için değiştirmiyorum. Else

Eğer alternatif bir yöntem here.

+0

işletim sisteminize bağlı kalmak kötü bir fikir ... bu sadece Windows üzerinde çalışıyor ve örneğin bir Unix sisteminde başarısız olur ... – patrick

59

rrmdir() bulabildiğim - yinelemeli silmek dizinleri:

function rrmdir($dir) { 
    foreach(glob($dir . '/*') as $file) { 
    if(is_dir($file)) rrmdir($file); else unlink($file); 
    } rmdir($dir); 
} 
+9

Bir kez tüm projemi bu işlevi kullanarak siliyorum, dikkatli olun! – gskema

+2

@gskema, Yorumunuz beni güldürdü! Sadece "ohhhh shhiiiiittttt" anını hayal edebiliyorum. Umarım hepsini geri alırsın! – silversunhunter

+3

@silversunhunter Aslında, yapmadım. Bağlantının kesilmesi bir şeyi siler, bu demektir. İyi ki, sadece bir test projesiydi. Günün dersi: uzak bir VCS kullanın – gskema

1

bu deneyin:

 
exec('rm -rf '.$user_dir); 
+5

asla! $ user_dir esape gerekir! lütfen ekleyin escapeshellarg ($ user_dir) –

+0

Deli misin? – BadHorsie

+0

güvensiz ve daha kötüsü: İşletim Sisteminize bağlı olarak ... Bu, örneğin bir Windows sisteminde başarısız olur ... – patrick

3
function delete_files($dir) { 
    if (is_dir($dir)) { 
    $objects = scandir($dir); 
    foreach ($objects as $object) { 
     if ($object != "." && $object != "..") { 
     if (filetype($dir."/".$object) == "dir") 
      delete_files($dir."/".$object); 
     else unlink ($dir."/".$object); 
     } 
    } 
    reset($objects); 
    rmdir($dir); 
    } 
} 
1

Bu fonksiyon konularında dizini silmek ve tüm alt dizinler ve dosyalar:

function DelDir($target) { 
    if(is_dir($target)) { 
     $files = glob($target . '*', GLOB_MARK); //GLOB_MARK adds a slash to directories returned 

     foreach($files as $file) 
     { 
      DelDir($file);  
     } 

     rmdir($target); 
    } elseif(is_file($target)) { 
     unlink($target); 
    } 
} 
0

biri güvenli ve iyi lprent Yanlışlıkla geçerli dizinde

public static function delTree($dir) { 
    $files = array_diff(scandir($dir), array('.','..')); 
    foreach ($files as $file) { 
     (is_dir("$dir/$file") && !is_link($dir)) ? delTree("$dir/$file") : unlink("$dir/$file"); 
    } 
    return rmdir($dir); 
    } 
İlgili konular