我正在使用Unison在两台服务器之间同步文件。我试图让PHP在上传文件后调用它。
我正在使用exec
,但它返回的错误代码为2。
exec("/usr/bin/unison /var/www/html/files ssh://a2//var/www/html/files -batch -prefer newer -times -path uploads", $out, $r);
$out
是一个空白数组,$r
是2.错误代码2是什么意思?
P.S。我在命令行上运行了php -a
,并复制并粘贴了该行,并且它有效。此外,exec('whoami')
有效(并且与我在命令行中登录的用户相同)。
答案 0 :(得分:1)
我修好了!使用popen
(感谢@ sberry2A)我看到了一个错误。
致命错误:创建unison目录时出错/.unison:权限被拒[mkdir(/ .unison)]
我在运行命令之前运行chdir('/home/user');
,然后看到有关HOME
未设置的错误。
所以,我在命令之前添加了HOME=/home/user
。现在它可以工作了,我也不需要chdir
命令!
exec("HOME=/home/user /usr/bin/unison /var/www/html/files ssh://a2//var/www/html/files -batch -prefer newer -times -path uploads", $out, $r);