如何使用PHP更改符号链接的目标? 感谢。
答案 0 :(得分:8)
您可以使用unlink功能删除现有链接,并使用symlink功能重新创建指向新目标的链接。
symlink($target, $link);
.
.
unlink($link);
symlink($new_target, $link);
您需要对每个错误进行检查。
答案 1 :(得分:0)
PHP可以使用shell_exec
或backtick operator执行shell命令。
因此:
<?php
`rm thelink`;
`ln -s /path/to/new/place ./thelink`;
这将作为运行Apache服务器的用户运行,因此您可能需要牢记这一点。
答案 2 :(得分:0)
要以原子方式执行此操作,而不会有删除原始符号链接和无法创建新符号链接的风险,您应该像这样使用 ln
系统命令:
system(
'ln --symbolic --force --no-dereference ' .
escapeshellarg($new_target) . ' ' .
escapeshellarg($link),
$relinked
);
if (0 === $relinked) {
# success
}
else {
# failure
}
force
标志对于更新现有链接而不会失败是必要的,并且 no-dereference
避免了不小心将链接放入旧符号链接的目标目录中的新手错误。
如果使用相对路径,最好将 chdir()
指向包含 $link
的目录。