【发布时间】:2016-05-25 10:45:47
【问题描述】:
我准备了一个可以运行的 PHP 脚本
shell_exec("git pull");
它应该是一个 webhook 用于 git repo 运行每次有更改推送到远程。执行后没有任何反应,我得到一个空响应。
我将目录所有者更改为“apache”(repo 被克隆为“apache”)。我已经生成了一个密钥并将其上传到 bitbucket。当我运行时,它似乎工作正常
# sudo -u apache git pull
完美运行。不提示任何内容。
当我跑步时
shell_exec("whoami");
我得到“阿帕奇”。
有没有可能是 php 阻塞了 git pull?当我运行其他 git 命令(如 git status)时,我得到了响应。
更新
当我这样做时
shell_exec("git pull 2>&1");
它说
error: cannot open .git/FETCH_HEAD: Permission denied
我很困惑。我确定 .git dirs 和 subdirs 的所有者是 apache,它有权利去...
更新 #2
我跑
shell_exec("git --work-tree=/path/to/repo --git-dir=/path/to/repo/.git pull 2>&1");
它仍然说
error: cannot open /path/to/repo/.git/FETCH_HEAD: Permission denied
不可能! /path/to/repo/.git/FETCH_HEAD 每个人都可以阅读!
我很困惑。
【问题讨论】: