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 中受版本控制,这碰巧以某种方式混淆了符号链接。
现在无法复制该行为。
谢谢:)
我最近一直在努力删除 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 中受版本控制,这碰巧以某种方式混淆了符号链接。
现在无法复制该行为。
谢谢:)