2013-03-01 151 views
0

我有文件上傳/ project1 /更新。取消鏈接或rmdir不能刪除folder.only刪除文件夾中的文件

問題是,只有更新中的文件被刪除。我想刪除文件夾上傳中的目錄...這就是說,文件夾名稱'project1'和'更新'也刪除更新後的文件刪除後,你可以找到我的錯誤?

$id = $_GET['id']; 
$filename = $_GET['filename']; //gets the file name eg:update.zip 
$fname = $_GET['fname']; //gets the folder name eg: project1 
$upload = "upload/"; 

$name = explode(".", $filename); 
$folder = $fname."/".$name[0]; 

$files = glob($upload.$folder.'/*'); // get all file names 
foreach($files as $file) 
{ // iterate files 
if(is_file($file)) 
unlink($file); // delete file dlm folder 

} 

closedir($name[0]); //close update dir 
rmdir($name[0]); //remove update dir 

這種編碼給予警告

警告:closedir()預計參數1是資源,

警告命令rmdir(更新)[function.rmdir]:沒有這樣的文件或目錄..

但在目錄上傳中,有這個文件project1/update。

此外,文件名'update.zip'只是數據庫中的名稱..不在目錄中。

+0

要打開的目錄路徑。你打開了你的目錄嗎?使用例如:'$ dh = opendir($ dir)'。 – Prabu 2013-03-01 07:11:52

+0

使用glob獲取文件後仍然需要打開目錄? – user2122473 2013-03-01 07:22:12

回答

0

您不能在closedir()上使用opendir() PHP函數在以前未打開的目錄(並存儲在文件句柄中)。如果您想要closedir(),您需要首先使用opendir()獲取此目錄的文件句柄。這是根據PHP手冊:http://php.net/manual/en/function.closedir.php

此外,如果你想rmdir()目錄,它需要是完全空的,你需要適當的權限。否則,你會得到錯誤。這也是根據PHP手冊:http://php.net/manual/en/function.rmdir.php

+0

仍然會收到警告..只刪除文件夾'update'中的文件。 – user2122473 2013-03-01 07:19:12

+0

所以'update'是'upload/project1'的子目錄嗎? – L0j1k 2013-03-01 07:20:55

+0

是的...我想刪除文件夾上傳中的文件 – user2122473 2013-03-01 07:23:05