我有两台远程服务器需要同步某个代码库。我在第一个设置了所有内容,但是在第二个设置时,我遇到了一个问题:
它们没有hg
安装在同一位置。我不能只是运行hg <command>
,因为它返回错误:
sh:hg:找不到命令
所以我一直在使用完整路径,但这不适用于两个单独的hg
位置。
我认为运行which hg
并使用响应中的路径会很聪明,所以这是新代码:
$hg = trim(`which hg`, "\n");
$output = `{$hg} pull -u`
但是$hg
是NULL
,所以这行不通!我可以通过 ssh 进入第二台服务器,并且看到它which hg
确实有效。我什至附加2>> path/to/log
了该命令是否有任何错误which
,但没有。我确保它正在写入日志,因此与此无关。
我没有在安全模式下运行,我绝对可以运行shell_exec
,因为其他命令有效。
我知道我可以创建一个符号链接,这样它们都有相同的路径并且只是对路径进行硬编码,但这让我发疯了为什么shell_exec('which hg')
不工作!!!