git pull通过PHP exec IIS

rmi*_*lle 12 php git ssh pull exec

很难诊断出我遇到过的最困难的问题.我似乎无法打电话:

exec('call git pull', $output);
Run Code Online (Sandbox Code Playgroud)

该过程挂起并倾向于使用IIS.

exec('call git status', $output); //works fine
Run Code Online (Sandbox Code Playgroud)

这就是我所做的:

  • 生成的RSA密钥添加到github(密码为空)
  • 每个人都有权限mysite/.git/,Program Files/git/bincmd.exe
  • 尝试使用'斜杠'问题在其他帖子中提到的ssl证书修复程序
  • 尝试使用https://而不是SSH
  • 尝试管道到stderr 2>NUL2>&1

显然,有一个权限问题,其中exec调用cmd.exe反过来调用git.exe,然后调用sh.exe连接到github,而github反过来利用git-pull和可能git-send-pack和GOD知道还有什么.

我猜'sh.exe'确定当前用户是IUSR,无法找到要通过身份验证的RSA密钥.

如果我能弄清楚如何ssh-keygen使用IUSR帐户,我会尝试过.

如果我能弄清楚如何execgit bash而不是git(via cmd.exe)我会尝试过.

以下是最简单的问题:

如何通过PHP的exec方法从我的github repo中提取?

问题肯定在于SSH,但我完全在尝试的一切结束.

救命!

小智 14

我今天遇到了同样的问题,并使用Process Monitor查看发生了什么,并发现由于某些原因sh.exe寻找密钥C:\Windows\SysWOW64\config\systemprofile\.ssh.所以我将所有内容复制C:\Users\Administrator\.ssh到该文件夹​​中,并且完美运行.

  • 我还想补充一点,你必须在新的文件夹工作之前给予IUSR读取权限:) (2认同)