3

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

git pull

并将更改拉到实时服务器。我从不从我的服务器推送。一切都像这样工作正常,但是通过腻子连接到服务器以便拉取并不是很方便。我在其中制作了小脚本“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

不幸的是,这不起作用。我做错什么了?

4

2 回答 2

1

问题出在文件系统权限中。即使更改了所有权限,“.git”存储库文件夹仍保留在 root 所有者和组中。一旦我改变了,一切都很好

于 2012-09-17T10:02:18.623 回答
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";
?>
于 2012-09-03T04:48:49.540 回答