0

我最近一直在努力在 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。

4

2 回答 2

0

When deleting a symlink, you need to treat it as a file, not a directory. So, you need to use unlink, rather than rmdir!

HTH :)

于 2015-02-10T14:25:08.577 回答
0

发现发生了什么。

事实证明,它毕竟与 PHP 无关——这些文件夹在 TortoiseSVN 和 NetBeans 中处于版本控制之下,而这恰好以某种方式与符号链接混淆。

现在无法复制行为。

谢谢:)

于 2015-02-10T14:32:26.170 回答