这是我遇到过的最难以诊断的问题。我似乎无法调用:
exec('call git pull', $output);
进程挂起,并且往往会带着 IIS 一起挂掉。exec('call git status', $output); //works fine
这是我所做的:
- 生成了添加到 Github 的 RSA 密钥(密码为空)
- 每个人都对
mysite/.git/
、Program Files/git/bin
和cmd.exe
有权限 - 尝试使用其他帖子中提到的修复“斜杠”问题的 SSL 证书方法
- 尝试使用 https:// 而不是 SSH
- 尝试将标准错误输出重定向到
2>NUL
和2>&1
显然,这里存在一个许可问题,即 exec
调用了 cmd.exe
,然后调用 git.exe
,然后调用 sh.exe
来连接 GitHub,然后使用 git-pull
和可能的 git-send-pack
等。
我猜测 'sh.exe' 确定当前用户为 IUSR 并且找不到要进行身份验证的 RSA 密钥。
如果我能弄清楚如何对 IUSR 帐户进行 ssh-keygen
,我就会尝试那样做。
如果我能弄清楚如何通过 exec
git bash 而不是 git(通过 cmd.exe
),我就会尝试那样做。
问题的基本形式如下:
如何通过 PHP 的 exec
方法从我的 Github 存储库中拉取数据?
问题似乎肯定与 SSH 有关,但我已经尝试了所有可以想到的方法。
请帮帮我!
call git pull
而不是仅仅使用git pull
呢? - gustavotkg