我的新VPS遇到了麻烦。我在我的GIT文件夹中用下面的代码创建了一个文件pull.php
:
<?php
$output = shell_exec('git pull');
echo "<pre>$output</pre>";
?>
它在我的共享主机上工作得很好,但在我的VPS上它返回null,没有'pull'命令执行。当我将命令'git pull'更改为'git status'时,它会显示结果:
在分支主机上你的分支是最新的'origin/master'。
未被跟踪的文件:(使用"git add…"来包含将要被跟踪的文件承诺)
info.php pull.php test.txt
没有添加到提交,但未跟踪的文件存在(使用"git add" to跟踪)
我的文件夹chmod到777和php似乎可以写它正确。在SSH上'git pull'很好。我的服务器是Ubuntu 14。3、Apache2、php5
我将非常感谢任何帮助!
可能git pull抛出错误,但默认情况下不打印错误。要修复此更改,请执行
$output = shell_exec('git pull');
:
$output = shell_exec('git pull 2>&1');
我觉得很奇怪,你没有输出什么…
你有root权限吗?
sudo -u apache git pull您应该将以下行添加到/etc/sudoers
apache2 ALL=(root) NOPASSWD: /usr/bin/git
允许apache以root身份执行git,从而访问
文件。然后调用git命令(最好是合适的可执行位置)
shell_exec('sudo /usr/bin/git pull /path/to/your/repo');