【发布时间】:2011-12-28 08:34:11
【问题描述】:
这是我遇到过的最难诊断的问题。我好像打不通:
exec('call git pull', $output);
进程挂起并倾向于使用 IIS。
exec('call git status', $output); //works fine
这是我所做的:
- 生成的 RSA 密钥添加到 github(密码为空)
- 每个人都拥有
mysite/.git/、Program Files/git/bin和cmd.exe的权限 - 尝试了其他帖子中提到的 ssl 证书修复,但存在“斜线”问题
- 尝试使用 https:// 而不是 SSH
- 尝试通过管道连接到 stderr
2>NUL和2>&1
显然,存在权限问题,exec 调用 cmd.exe,后者又调用 git.exe,后者又调用 sh.exe 连接到 github,而 github 又使用 git-pull 和可能的 @987654333 @and 上帝知道还有什么。
我猜 'sh.exe' 确定当前用户是 IUSR 并且找不到用于身份验证的 RSA 密钥。
如果我能弄清楚如何ssh-keygen IUSR 帐户,我会尝试的。
如果我能弄清楚如何使用exec git bash 而不是 git(通过cmd.exe)我会尝试的。
这是最简单形式的问题:
如何通过 PHP 的 exec 方法从我的 github 存储库中提取?
问题似乎出在 SSH 上,但我完全没有办法尝试。
救命!
【问题讨论】:
-
您为什么只使用
call git pull而不是git pull? -
调用只是使用 exec() 作为读取它的“推荐”方法 - 我已经尝试了这两种方法,但没有发现明显的区别
-
我很肯定您在写权限方面遇到了问题。如果您考虑一下 git status 与 git pull 之间的区别。一个显示有关存储库的信息,而另一个实际进行文件系统级别的更改。
-
是的,这似乎是一个权限问题,但正如问题所述,我尝试了我能想象到的最宽松的权限,但无济于事。