用于运行`git pull`的Apache的Apache权限

时间:2014-06-26 02:38:39

标签: php git apache ubuntu vps

我的新VPS遇到了麻烦。我在我的GIT文件夹中使用此代码创建了一个文件pull.php

<?php
$output = shell_exec('git pull');
echo "<pre>$output</pre>";
?>

它在我的共享主机上工作正常,但在我的VPS上,它返回null并且没有&#39; pull&#39;命令已执行。当我改变命令&#39; git pull&#39;到&#39; git status&#39;它显示结果:

  

在分支主机上   您的分支机构是最新的&origin; /&#39;。

     

未跟踪的文件:(使用&#34; git add ...&#34;包含在将会是什么内容中   提交)

     

info.php pull.php test.txt

     

没有添加到提交但未跟踪的文件存在(使用&#34; git add&#34; to   轨道)

我的文件夹chmod到777和php似乎可以正确地写上它。 &#39; git pull&#39;在SSH上没问题。我的服务器:Ubuntu 14.x,Apache2,php5

我非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

可能 git pull 会抛出错误,但默认情况下不会打印错误。要解决此更改此行

$output = shell_exec('git pull');

这个:

$output = shell_exec('git pull 2>&1');

答案 1 :(得分:0)

我觉得很奇怪你什么都没有输出......

你有root权限吗?

在root文件夹中尝试root:sudo -u apache git pull

看看你是否得到任何输出。

答案 2 :(得分:0)

您应该将以下行添加到/etc/sudoers

apache2 ALL=(root) NOPASSWD: /usr/bin/git

这允许apache以root身份执行git,从而访问文件

然后调用git命令(首选适当的可执行位置)

shell_exec('sudo /usr/bin/git pull /path/to/your/repo');