【问题标题】:PHP Windows, rmdir of a symlinked folderPHP Windows,符号链接文件夹的 rmdir
【发布时间】:2015-02-10 14:18:36
【问题描述】:

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

不胜感激, 西维尔。

【问题讨论】:

    标签: php windows symlink rmdir


    【解决方案1】:

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

    HTH :)

    【讨论】:

    • 不幸的是,在 Windows 上并非如此。在 Linux 上,它确实如您所描述的那样工作。
    • 也许像它这样愚蠢的东西需要在末尾加上斜线?还是不行?
    • 不,我已经发布了解决方案 - 脚本没问题,这是一个不同的问题 - 对文件的颠覆控制。谢谢你的帮助:)
    【解决方案2】:

    找出发生了什么。

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

    现在无法复制该行为。

    谢谢:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      相关资源
      最近更新 更多