在IIS上通过PHP设置git部署时遇到问题
首先,这是我第一次设置Webhook,我不熟悉Windows服务器。我看过很多关于这个的帖子,但我仍然无法解决这个问题——可能是因为我对Windows服务器和权限缺乏了解 我有一个Windows2008R2,我希望在将更改推送到外部GIT存储库后能够通过PHP脚本自动拉取在IIS上通过PHP设置git部署时遇到问题,php,git,deployment,ssh,iis-7.5,Php,Git,Deployment,Ssh,Iis 7.5,首先,这是我第一次设置Webhook,我不熟悉Windows服务器。我看过很多关于这个的帖子,但我仍然无法解决这个问题——可能是因为我对Windows服务器和权限缺乏了解 我有一个Windows2008R2,我希望在将更改推送到外部GIT存储库后能够通过PHP脚本自动拉取 站点已设置并正常工作。它位于c:\inetpub\wwwroot\sitename中 此文件夹是使用我的远程桌面用户(管理员)克隆的。克隆是通过gitbash完成的,我知道SSH密钥位于管理员的home/.SSH目录中 此文
- 站点已设置并正常工作。它位于c:\inetpub\wwwroot\sitename中
- 此文件夹是使用我的远程桌面用户(管理员)克隆的。克隆是通过gitbash完成的,我知道SSH密钥位于管理员的home/.SSH目录中李>
- 此文件夹可由IIS\u IUSRS写入
- 我还将密钥复制到
中,如下所述()C:\ProgramFiles(x86)\Git\.ssh
exec(''C:\ProgramFiles(x86)\Git\bin\Git.exe“pull 2>&1',$output);
变量转储(输出);
回音'--完成--';
页面只是挂起,浏览器上有加载图标。没有输出
但如果“状态”是:
我得到了预期的输出
我猜这可能是由于SSH密钥的许可。不过,使用Windows CMD(而不是Git Bash)运行这两个脚本是可行的
所以我的问题是:
谢谢 很可能您已经为当前用户存储了git凭据,但当web服务器(IIS_IUSRS)执行git命令时,is没有凭据,因此会要求输入用户名和密码。然后挂起脚本 你可以试试:
- 通过管道将用户名和密码传递到流程编辑:这对我来说不起作用,因为git创建了多个子流程,这些子流程没有绑定到管道
- 将凭据放入_netrc文件中,并将其保存在IIS用户的主目录中(请参阅C:\Windows\ServiceProfiles…)
- 以IIS用户身份启动控制台,使用git命令并使用该用户的凭据帮助程序存储凭据
有关如何存储Git凭据的信息,请参见此处:好的,谢谢。我一有时间就试试看。
exec('"C:\Program Files (x86)\Git\bin\git.exe" status 2>&1', $output);
var_dump($output);
echo '--done--';