【发布时间】:2012-10-16 02:59:08
【问题描述】:
还没有弄清楚。我已经看到了一些答案,但没有一个有帮助。
我正在尝试使用 Github Webhooks 让 github 在我的服务器上点击一个 url,并让服务器在点击后立即拉下新提交的项目。我有一个包含以下内容的 php 脚本:
<?php `git pull git@github.com:my-user/myrepo.git`; ?>
但是,该脚本在命中时是以用户 apache 运行的,所以我尝试了:
chown -R apache:apache .
它仍然有一个权限被拒绝的错误。
然后我尝试编辑 sudoers 文件并更改以下内容:
Host_Alias LOCAL=127.0.0.1
apache LOCAL=NOPASSWD: /var/www/html/git-hook.php
这仍然行不通。
如何做到这一点?如果我跑:
sudo php git-hook.php
它工作得很好,所以 php 文件中的代码没有任何问题。我只想让它自动化。
有什么想法吗?
编辑:
我也忘了提。我什至创建了一个文件夹 /home/apache/.ssh 并复制了 git pull 的公钥和相同的结果。
【问题讨论】:
-
在 sudoers 中有 apache 用户?它的 git sudo 正在运行(通过 PHP),而不是 git-hook.php
-
产生相同的结果。不确定我是否理解您评论的最后一部分“它的 git sudo 正在运行(通过 PHP),而不是 git-hook.php”
-
我的意思不是以运行 git 的 root 运行 php,而是以运行 git 的 apache 运行 php(因此您需要在 sudoers 中编辑
/var/www/html/git-hook.php行)。有什么可以在 apache 错误日志中阐明更多信息? -
将我的 sudoers 文件修改为
apache LOCAL=NOPASSWD: /usr/bin/php,现在我从日志中收到sudo: sorry, you must have a tty to run sudo,另外我看到一组奇怪的:Could not create directory '/var/www/.ssh'. Host key verification failed. fatal: The remote end hung up unexpectedly -
不应该是
apache LOCAL=NOPASSWD: /usr/bin/git——apache用户可以通过sudo运行的命令吗?