我有这个本地仓库,我做了更改并运行:
git add .
git commit -m "message"
git push -u origin master
我的github有两个WebHooks设置,一个转到http://requestb.in URL,另一个转到PHP可执行脚本(755),在同一个文件夹中(可从外部访问)。
PHP脚本:
<?php echo `git pull origin master`;
// echo "works";
// echo `whoami` ?>
注释的测试行正在运行,因此这是我的证明脚本路径正常以及语法。
然而,在我将更改从local更改为github repo之后,我检查服务器上的文件但没有任何反应,很明显我的PHP脚本中的echo git pull origin master
什么也没做。
如果我在以root身份登录的shell(git pull origin master)中运行此命令,则会使用repo中的最新版本更新文件。
另外,我设置的第二个钩子,来自requestb.in的第二个钩子,因为我可以看到来自github的请求。
我在服务器上的文件夹拥有正确的权限,可以从外部访问,我很绝望,我不知道如何让这个工作。
有什么问题,我怎样才能使这个工作?如何在github 的管理面板中设置WebHook,或者是PHP脚本,是否存在权限问题,出了什么问题?! :o
谢谢。
在我的3条评论后更新: 在处理了几个小时后,我可以清楚地看到WebHook并没有真正启动php文件。如果我在shell中运行以root“php test.php”身份登录,我得到:
root@echo [/home/moove/public_html/dev/wert]# php hooh.php
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 3 (delta 1), reused 3 (delta 1)
Unpacking objects: 100% (3/3), done.
From github.com:chrisdemetriad/wert
* branch master -> FETCH_HEAD
Updating 0c67b85..89e4fdf
Fast-forward
XXX.php | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
root@echo [/home/moove/public_html/dev/wert]#
我需要的是什么,服务器上的文件会更新。但是,如果我不手动执行,文件不会更新,这必须是因为PHP脚本。我的最新版本有效:
<?php echo `git pull origin master`;