我最近一直在努力在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。
答案 0 :(得分:0)
删除符号链接时,需要将其视为文件,而不是目录。所以,你需要使用unlink,而不是rmdir!
HTH:)
答案 1 :(得分:0)
了解发生了什么。
事实证明,它毕竟不是PHP相关的 - 这些文件夹在TortoiseSVN和NetBeans中受版本控制,这恰好在某种程度上弄乱了符号链接。
现在无法复制这种行为。
感谢:)