';git pull';在SSH中执行,但不在github post-rereceive脚本中执行


'git pull' executing in SSH, but not in github post-receive script

我正在尝试将github设置为webever部署自动化。除了最重要的一点,我什么都做了。我有一个文件@mydomain.com/github.php,看起来像这样:

<?php
`git pull`;
?>

这是我的github repo的接收后URL。Github正在成功发布,但shell命令没有运行。当我尝试SSHing进入我的服务器,并直接运行脚本时:

php github.php

它工作得很好,更改的文件被成功地提取

From git://github.com/user/Repo
   7e3176d..f889c14  master     -> origin/master

但是当我在浏览器中访问页面时,或者当github发布到页面时,shell命令不会执行。没有错误,只是一个空结果。我在这里做错了什么?

有两个可能的问题:

  1. 权限-很可能您的Web服务器用户没有必要的权限
  2. 工作目录。仔细检查shell命令是否以正确的路径执行(getcwd()

UPD

Git将错误消息输出到stderr,因此要查看真正的错误消息,需要

echo `git pull 2>&1`;