2012-12-11 103 views
1

如何用rmdir刪除目錄?如何使用rmdir刪除Windows目錄?

該目錄爲空,但我無法刪除/刪除它。

$root_dir = "C:/xampp/htdocs/";  
$dir = $root_dir.'tmp/';  
rmdir($dir); 
+1

PHP和/或Apache有權刪除嗎? Windows權限比Unix上的權限要細緻得多。確保你有'error_reporting'一直到-1。 – Charles

+2

檢查該文件夾的文件權限,也許你沒有正確的權限刪除它 – vodich

+1

也許你有隱藏的文件,或者你沒有刪除權限? –

回答

1
function removedir($dirname) 
{ 
    if (is_dir($dirname)) 
    $dir_handle = opendir($dirname); 
    if (!$dir_handle) 
    return false; 
    while($file = readdir($dir_handle)) { 
     if ($file != "." && $file != "..") { 
      if (!is_dir($dirname."/".$file)) 
      unlink($dirname."/".$file); 
      else 
      { 
       $a=$dirname.'/'.$file; 
       removedir($a); 
      } 
     } 
    } 
    closedir($dir_handle); 
    rmdir($dirname); 
    return true; 
} 
1

如果權限是不是一個問題,然後tmp目錄可能包含在它的文件。 rmdir只刪除空目錄。使用該功能可以刪除目錄+所有文件:

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

檢查http://us3.php.net/manual/en/function.rmdir.php#91797參考:)

1

這使我重要的考慮因素愣了一會:確保你沒有chdir()到要刪除的目錄,如果你這樣做了,chdir()以前就可以了。您無法刪除Windows上的當前工作目錄。

+0

謝謝,這是竊聽我。但是,有什麼選擇? –

+0

只是'chdir()'在刪除之前的其他地方:) –