【发布时间】: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