我有两个服务器,我想为svn做一个脚本更新我的项目。服务器A是我的生产服务器,我尝试从php更新svn。
我的服务器B是我的开发服务器。
1。我的脚本在我的服务器B工作良好:
$projet = $_POST['data'];
exec('ssh user@myserver "echo myPassword | sudo -S ./svnup.sh '.$projet.'"',$out,$ret);
=>没关系。
2。我在我的服务器a上做了一个脚本,直接从互联网更新(我的服务器B是本地的):
$projet = $_POST['data'];
exec('sudo -S ./svnup.sh $project',$out);
var_dump($out[0]);
die;
=>它不工作,响应= NULL
如果有人能帮助我,请提前感谢。
您的问题是实际运行该命令的用户。在你的第一个例子中,它是"用户",在你的第二个例子中,它是webserver("apache"或"nobody"取决于主机配置)。通常webserver没有写权限,所以svn update失败。
没有人禁止你从服务器B直接在服务器a上使用你的例子。实际上,你将认证为"用户",谁拥有运行svn update的相关权限,即使它是从同一服务器上调用的。