2009-08-18 29 views

Odpowiedz

47

Cóż, zawsze

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

gdzie dostępne.

+8

Ale to nie będzie działać na serwerze Windows. – Raza

+4

@KashifRaza: Right. Stąd "tam, gdzie jest to możliwe". – chaos

+0

W systemie Windows użyj tego: system ('rd/Q/S "'. $ Dir. '"'); – ddelrio1986

2

Według źródła this;

Zaoszczędź trochę czasu, jeśli chcesz wyczyścić katalog lub go usunąć i jesteś w systemie Windows.

użyj:

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

Można użyć innej składni DEL lub jakąkolwiek inną powłokę util. Być może trzeba będzie zezwolić na interakcję usługi z pulpitem, ponieważ jest to moje bieżące ustawienie i nie zmieniam go, aby to przetestować.

jeszcze można znaleźć alternatywny sposób here.

+0

to zły pomysł, aby polegać na twoim systemie operacyjnym ... działa to tylko w systemie Windows i na przykład w systemie Unix zawiedzie ... – patrick

59

rrmdir() - usuwał katalogach:

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

Kiedyś usuwam cały mój projekt za pomocą takiej funkcji, uważaj! – gskema

+2

@gskema, Twój komentarz mnie rozśmieszył !!! Mogę sobie tylko wyobrazić moment "ohhhh shhiiiiittttt". Mam nadzieję, że wszystko wróciłeś! – silversunhunter

+3

@silversunhunter Właściwie to nie. Kiedy 'unlink' usuwa coś, oznacza to. Dobrze, że był to tylko projekt testowy. Lekcja dnia: użyj zdalnego VCS – gskema

1

Spróbuj tego:

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

nigdy! musisz esape $ user_dir! proszę dodać escapeshellarg ($ user_dir) –

+0

Czy jesteś szalony? – BadHorsie

+0

niebezpieczne i gorsze: zależy od twojego systemu operacyjnego ... na przykład na systemie Windows ... – 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

Ten fuction usunąć katalog i wszystkie podkatalogi i pliki:

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

Jeden bezpieczny i dobrze położony w PHP funkcja komentarzach przez lprent To zapobiega przypadkowemu usunięciu zawartość dowiązania symboliczne katalogów znajdujących się w bieżącym katalogu

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); 
    } 
Powiązane problemy