通过PHP和控制台从GIT中提取

时间:2012-09-03 04:33:24

标签: php git

这对你们来说可能是微不足道的,但我需要一些帮助。

所以我有一个bitbucket项目的存储库。我将repo克隆到我的本地PC上进行处理。然后我推回到bitbucket,然后我用putty连接到我的服务器并调用

git pull

将更改提取到实时服务器。我从不推动我的服务器。 这样的一切都很好,但是通过putty连接到服务器以便拉动它并不是很方便。 我把小脚本“git_pull_script.sh”放在哪里:

git reset --hard
git clean -f
git pull
chown -f -R tdadmin *
...

那里没有问题。如果我在服务器上运行脚本

bash /home/tdadmin/git_pull_script.sh

一切顺利,做我需要的。为了澄清,git_pull_script设置了所有者和组tdadmin。

现在为了让我更简单,我写了这个小小的PHP脚本。

<?php
exec('bash /home/tdadmin/git_pull_script.sh', $output);
print_r($output);

我认为应该做的工作。所以我可以简单地拨打http://tddomain.com/pullscript.php

不幸的是,这不起作用。有人可以指出我做错了什么吗?

谢谢

2 个答案:

答案 0 :(得分:1)

问题在于文件系统权限。即使已更改所有权限,“。git”存储库文件夹仍保留root权限和组。一旦我改变了,一切正常

答案 1 :(得分:0)

也许无法找到bash?这是一个更简单的测试脚本,以缩小

<?php
$output=array();
exec("bash --version",$output);
echo "bash:\n";print_r($output);
$output=array();
exec("/bin/bash --version",$output);
echo "/bin/bash:\n";print_r($output);
?>

另一个想法:如果您的主机使用chroot或其他东西,可能找不到/ home / tdadmin?尝试使用脚本确认:

<?php
echo file_exists('/home/tdadmin/git_pull_script.sh')?"Yes":"no";
?>