PHP Windows,符号链接文件夹的rmdir

时间:2015-02-10 14:18:37

标签: php windows symlink rmdir

我最近一直在努力在PHP中删除带有Windows内容的符号链接文件夹。

我正在做的过程是: 1.符号链接文件/文件夹从位置A到位置B(都很好) 2.从位置B取消链接所有文件/文件夹

现在这就是事情变得棘手的地方。 我的代码:

  echo("\n unlinking: ".$pre.$folder.'/'.$elem);
  if(file_exists($pre.$folder.'/'.$elem)){
        if(isWindows()){
            if(is_dir($pre.$folder.'/'.$elem)){
                rmdir($pre.$folder.'/'.$elem);
            } else {
                unlink($pre.$folder.'/'.$elem);
            }
        } else {
            unlink($pre.$folder.'/'.$elem);
        }
  } else {
    echo("\n -> Not there. \n");
  }

如果目标是文件或空文件夹,则一切正常。但是,当符号链接文件夹包含内容时,我会收到一条警告,提示我无法删除非空文件夹,并且文件夹未被删除。

Warning: rmdir(dirname): Directory not empty

这意味着当使用rmdir(推荐的操作)时,带有Windows内容的符号链接文件夹是不可移除的。

我可以在Windows资源管理器中手动删除该文件夹,并且该文件夹正常工作(仅删除符号链接)。

非常感谢帮助, Sivael。

2 个答案:

答案 0 :(得分:0)

删除符号链接时,需要将其视为文件,而不是目录。所以,你需要使用unlink,而不是rmdir!

HTH:)

答案 1 :(得分:0)

了解发生了什么。

事实证明,它毕竟不是PHP相关的 - 这些文件夹在TortoiseSVN和NetBeans中受版本控制,这恰好在某种程度上弄乱了符号链接。

现在无法复制这种行为。

感谢:)