Apache允许php运行' git pull '


Apache permission for php to run `git pull`

我的新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');