我在我的 github 存储库中创建了一个 webhook,它发布在我的实时服务器上的 Hook url 上,以运行 pull 命令来更新我在服务器上的 repo 文件。
问题是我创建的 Hook 文件在/var/www/site/web/hookfile.php 中(发布请求去那里。我也收到正文响应)
我的 repo 文件在/var/www/git-repo/
当我将任何内容推送到我的 github 存储库时,它不会更新 git-repo。 我使用终端及其工作运行此命令。
cd /var/www/git-repo && git pull
但是通过我的 php 文件它不起作用
shell_exec('cd /var/www/git-repo && git pull')
最佳答案
shell_exec() 无提示地失败,因为只报告 STDOUT 而不是 STDERR。
尝试:
echo shell_exec("cd /var/www/git-repo && /full/path/to/bin/git pull 2>&1");
通常是权限错误,可以通过向执行 php (apache?) 的用户添加权限来修复
chown -R www-agent:www-agent repository/
但也可能是远程存储库的连接错误(身份验证、ssh key ...)。
关于php - 'git pull' 命令可以从终端运行,但不能通过 git 存储库 Hook 使用 php shell_exec(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37752962/