【问题标题】:500 Internal Server Error with bare git repo after post-receive hook500 内部服务器错误与接收后挂钩后的裸 git repo
【发布时间】:2015-03-15 15:07:28
【问题描述】:

我认为这是我在此专用服务器(使用 cpanel)上设置 Git 时遇到的最后一个问题。

我在我的 PC 上创建了一个裸仓库,将它放在服务器上:/home/cpaneluser/git-repos/

编辑/home/cpaneluser/git-repos/myproject.git/hooks/post-receive,其内容为:

#!/bin/sh
GIT_WORK_TREE=/home/cpaneluser/public_html GIT_DIR=/home/cpaneluser/git-repos/myproject.git git checkout -f

我给了它 0764 权限,所以所有者可以执行它。它似乎执行得很好,因为它确实按预期将我的 repo 文件放入了我的 public_html 目录。

然后,我在浏览器中导航到域并收到内部服务器错误,它是通用的、无用的错误消息 The server encountered an internal error or misconfiguration and was unable to complete your request.

真正奇怪的是,如果我手动编辑位于 webroot 'public_html' 中的 'index.php' 文件,它似乎可以神奇地修复所有问题。但是,执行此编辑会使 get repo 与我的本地端不同步。

有没有人知道为什么我在运行'post-receive' 钩子后出现互联网服务器错误,该钩子执行checkout -f。我该如何解决这个问题?

谢谢。

【问题讨论】:

  • @PaulCrovella 在 suphp_log 中找到一个:[Fri Jan 16 17:27:08 2015] [warn] File "/home/cpaneluser/public_html/index.php" is writeable by group。这些文件是用 0664 创建的,而它们应该是 0644。所以我现在想,为什么用错误的权限创建文件,以及如何补救?
  • post-receive hook 需要设置 umask。在脚本的开头,我添加了:umask 0022,它创建了具有 0644 权限的文件,内部服务器错误现在消失了。现在完美运行! - @PaulCrovella 如果您想将其作为答案提交,我会为您接受 ;)
  • @PaulCrovella 我知道 :) 但是,由于这里有一些很酷的人,我的代表受到了伤害,我有一两个问题被否决了。我无法发布答案,我收到“我们不接受来自此帐户的答案”。太糟糕了,我没有做错任何事。我问了一个问题,提供了尽可能多的信息,但在没有人说出原因的情况下被否决了。只是打了就跑。我想如果我得到足够的代表,我很快就能回答问题。我只是想我应该给某人选择的答案,并获得代表以帮助恢复我的帐户的代表。

标签: php linux git centos cpanel


【解决方案1】:

添加umask 0022 解决了我的权限问题。

#!/bin/sh
umask 0022
GIT_WORK_TREE=/home/cpaneluser/public_html GIT_DIR=/home/cpaneluser/git-repos/myproject.git git checkout -f

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2012-08-08
    • 2019-03-17
    • 2013-01-05
    • 2015-07-28
    相关资源
    最近更新 更多