【问题标题】:'git pull' executing in SSH, but not in github post-receive script'git pull' 在 SSH 中执行,但不在 github post-receive 脚本中
【发布时间】:2012-02-20 06:15:18
【问题描述】:

我正在尝试将 github 设置为 websever 部署自动化。除了最重要的一点外,我已经完成了所有工作。我有一个文件@mydomain.com/github.php,看起来像这样:

<?php
`git pull`;
?>

这是我的 github 存储库的接收后 URL。 Github 已成功发布,但 shell 命令未运行。当我尝试通过 SSH 连接到我的服务器并直接运行脚本时:

php github.php

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

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

但是当在我的浏览器中访问该页面或当 github 向它发送信息时 - 不执行 shell 命令。没有错误 - 只是一个空结果。我在这里做错了什么?

【问题讨论】:

标签: php git ssh github shell-exec


【解决方案1】:

有两个可能的问题:

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

UPD

Git 将错误信息输出到 stderr,以便查看您需要的真实错误信息

echo `git pull 2>&1`;

【讨论】:

  • 1.我正在我的 VPS 的一个子帐户上执行此操作。我可以完全控制进入并对权限进行必要的更改,但不幸的是我不确定如何/在哪里执行此操作。您能否给我一些指导,我将如何检查和设置适当的权限? 2.当前工作目录正确。
  • “错误:无法打开.git/FETCH_HEAD:权限被拒绝”是我收到的错误。
猜你喜欢
  • 2012-10-09
  • 2012-06-03
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 2023-02-21
相关资源
最近更新 更多