【问题标题】:unlink or rmdir cant remove folder.only remove file in folder取消链接或 rmdir 无法删除文件夹。仅删除文件夹中的文件
【发布时间】:2013-03-01 06:50:47
【问题描述】:

我在 upload/project1/update 中有文件。

问题是,只有更新中的文件被删除。我想删除文件夹上传中的目录...也就是说,文件夹名称“project1”和“update”也会在更新中的文件被删除后删除。你能帮我找出错误吗??

$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(update) [function.rmdir]: No such file or directory..

但是在上传的目录中,有这个文件project1/update。

另外,文件名是“update.zip”只是数据库中的名称而已..不在目录中。

【问题讨论】:

  • 要打开的目录路径。你打开你的目录了吗?使用例如:$dh = opendir($dir).
  • 使用glob获取文件后还需要打开目录吗?

标签: php unlink rmdir


【解决方案1】:

您不能在以前没有使用opendir() PHP 函数打开(并存储在文件句柄中)的目录上closedir()。如果您想closedir(),您需要先使用opendir() 获取此目录的文件句柄。这是根据 PHP 手册:http://php.net/manual/en/function.closedir.php

另外,如果你想rmdir()一个目录,它需要是完全空的并且你需要适当的权限。否则,你会得到错误。这也是根据 PHP 手册:http://php.net/manual/en/function.rmdir.php

【讨论】:

  • 一旦你得到一个目录文件句柄,你就可以在它上面“closedir()”,然后你的脚本将继续执行它的原始错误到rmdir()。请不要忘记接受我的回答。谢谢!
  • closeir 后,在我的 rmdir($folder) 中仍然收到警告;警告:rmdir(project1/update) [function.rmdir]: No such file or directory
  • 查看您的错误消息:检查以确保您包含完整路径(“/uploads/project1/update”,而不仅仅是“project1/update”)。
  • 现在,没有警告,但只有文件夹名称更新被删除,而不是project1。如果有两个rmdir,是否可行?像 rmdir($dir); rmdir($fname); ?
  • 当然可以。一个接一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多