php - 'git pull' 命令可以从终端运行,但不能通过 git 存储库 Hook 使用 php shell_exec()

标签 php git github repository shell-exec

我在我的 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/

相关文章:

在 Total 之后 Git 挂起

git - jBPM Business Central 的远程 git 存储库

java - 子模块是解决此 GUI 问题的正确方法吗?

git - 我怎样才能确保我的提交真的发生了?

php - 如何处理 Material Design Light mdl-menu 中的事件

php - Zend SQL - 条件 where 子句

php - 解析错误 : syntax error, 意外 T_VAR

php - PDO::__construct():服务器向客户端发送了未知的字符集 (255)。请向开发商举报

git - 总支未知

Jenkins GitHub 拉取请求构建器 - 获取执行 shell 的分支名称