我以为我之前看到过这个问题的答案,但在搜索到谷歌之后我就找不到了。
如何使用指向的文件副本替换现有符号链接? IE通过链接复制源文件。
从这个开始
/path/to/file.txt
/link/path/file.txt -> /path/to/file.txt
然后调用类似copy('/path/to/file.txt', '/link/path/file.txt');
的内容并获取此内容:
/path/to/file.txt
/link/path/file.txt
我不能只使用copy()
的原因是它似乎不支持用它的源文件覆盖符号链接,因为它认为它们是相同的并且给出错误“XXXXX和YYYYY是相同(未复制)“
是否有类似copy的方法可以使用其源文件的副本覆盖符号链接?
答案 0 :(得分:2)
我认为单一命令不可能。这是一个不涉及重命名的解决方案(你应该添加错误检查):
$linkLoc = readlink('/link/path/file.txt');
unlink('/link/path/file.txt');
copy($linkLoc, '/link/path/file.txt');
如果你发现自己做了很多这样的事情,你可能会发现将它包装在一个方便的功能中是值得的。
答案 1 :(得分:1)
我不认为有一个功能可以做到这一点 - 除非你自己写。
我的工作是:
(当然,每次执行错误检查)。
如果出现问题,你可能会破坏符号链接并且无法替换它,但重命名应该是相当安全的(因为它位于同一目录中,它将位于相同的文件系统/分区上)。