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

PHP Windows, rmdir of a symlinked folder

我最近一直在努力删除 PHP 中包含 windows 内容的符号链接文件夹。

我做的过程是: 1. 从位置 A 到位置 B 的符号链接 files/folders(一切正常) 2. 从位置 B

取消所有 files/folders 的链接

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

  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 资源管理器中手动删除该文件夹并且可以正常工作(仅删除符号链接)。

希望得到帮助, 西维尔.

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

HTH:)

弄清楚是怎么回事了。

事实证明,它毕竟不是 PHP 相关的 - 这些文件夹在 TortoiseSVN 和 NetBeans 中受版本控制,这碰巧以某种方式混淆了符号链接。

现在无法复制该行为。

谢谢:)