这对你们来说可能是微不足道的,但我需要一些帮助。
所以我有一个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
不幸的是,这不起作用。有人可以指出我做错了什么吗?
谢谢
答案 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";
?>