我的新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
我非常感谢任何帮助!
答案 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');