2009-08-18 39 views

Trả lời

47

Vâng, luôn có

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

nếu có.

+8

Nhưng điều này sẽ không hoạt động trên máy chủ Windows. – Raza

+4

@KashifRaza: Đúng vậy. Do đó "nếu có". – chaos

+0

Trên Windows, hãy sử dụng: hệ thống ('rd/Q/S' '. $ Dir.' "'); – ddelrio1986

2

Theo nguồn this;

Tiết kiệm thời gian, nếu bạn muốn xóa một thư mục hoặc xóa nó và bạn đang ở trên các cửa sổ.

Sử dụng này:

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

Bạn có thể sử dụng cú pháp DEL khác, hoặc bất kỳ util vỏ khác. Bạn có thể phải cho phép dịch vụ tương tác với máy tính để bàn, vì đó là cài đặt hiện tại của tôi và tôi không thay đổi cài đặt này để kiểm tra điều này.

khác bạn có thể tìm thấy một phương pháp khác here.

+0

đó là một ý tưởng tồi để phải phụ thuộc vào hệ điều hành của bạn ... điều này chỉ hoạt động trên Windows và sẽ thất bại trên một hệ thống Unix chẳng hạn ... – patrick

59

rrmdir() - đệ quy xóa thư mục:

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

Tôi đã từng xóa toàn bộ dự án của tôi bằng cách sử dụng chức năng như vậy, hãy cẩn thận! – gskema

+2

@gskema, Nhận xét của bạn khiến tôi cười! Tôi chỉ có thể tưởng tượng khoảnh khắc "ohhhh shhiiiiittttt". Tôi hy vọng bạn có tất cả trở lại! – silversunhunter

+3

@silversunhunter Trên thực tế, tôi đã không. Khi 'unlink' xóa một cái gì đó, nó có nghĩa là nó. Điều tốt là nó chỉ là một dự án thử nghiệm. Bài học trong ngày: sử dụng VCS – gskema

1

Hãy thử điều này:

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

chưa bao giờ! bạn phải esape $ user_dir! vui lòng thêm escapeshellarg ($ user_dir) –

+0

Bạn có điên không? – BadHorsie

+0

không an toàn và tệ hơn: phụ thuộc vào hệ điều hành của bạn ... điều này sẽ không thành công trên hệ thống cửa sổ chẳng hạn ... – 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

fuction này xóa các thư mục và tất cả thư mục con và tệp:

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

Một chức năng an toàn và tốt nằm trong ý kiến ​​php bởi lprent Nó ngăn chặn vô tình xóa nội dung của thư mục liên kết tượng trưng nằm trong thư mục hiện

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); 
    } 
Các vấn đề liên quan