我有一个GIT存储库,并使用PHP脚本从主分支拉取并更新服务器上的文件。这是一个简单的解决方法,只是为了测试它。我想在github上添加一个webhook,在成功推送后发送回调,以便我可以从这个repo中拉取。
脚本两种方式运行:
- 从命令行 - 从HTTP请求
不同之处在于,当我从HTTP运行它时,它不会拉取新的更改,只显示它是最新的,即使我100%确定repo中有新的更改。输出来自GIT命令,所以我确定它可以工作,apache具有运行脚本文件和其中使用的命令的适当权限。
当我通过命令行运行它(通过相同的脚本或干净的git命令)时,一切正常,脚本拉取新更改并显示标准GIT输出。
PHP代码:
我该如何修复这个问题?
脚本两种方式运行:
- 从命令行 - 从HTTP请求
不同之处在于,当我从HTTP运行它时,它不会拉取新的更改,只显示它是最新的,即使我100%确定repo中有新的更改。输出来自GIT命令,所以我确定它可以工作,apache具有运行脚本文件和其中使用的命令的适当权限。
当我通过命令行运行它(通过相同的脚本或干净的git命令)时,一切正常,脚本拉取新更改并显示标准GIT输出。
PHP代码:
echo "Pulling changes from master branch...\n";
$result = shell_exec('cd /var/git-test && git reset --hard HEAD && git pull');
if($result !== null){
echo $result;
}else{
echo $result;
echo "Error in Git pull comand";
}
我该如何修复这个问题?
sudo -u www-data php deploy.php
进行了测试,并且发现它显示了一些额外的信息,这些信息没有被 shell_exec() 返回,这有点困惑。无法执行 Git pull,因为 www-data 没有在 Github 上注册他的SSH密钥。 - lukasz