Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在IIS上通过PHP设置git部署时遇到问题_Php_Git_Deployment_Ssh_Iis 7.5 - Fatal编程技术网

在IIS上通过PHP设置git部署时遇到问题

在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目录中 此文

首先,这是我第一次设置Webhook,我不熟悉Windows服务器。我看过很多关于这个的帖子,但我仍然无法解决这个问题——可能是因为我对Windows服务器和权限缺乏了解

我有一个Windows2008R2,我希望在将更改推送到外部GIT存储库后能够通过PHP脚本自动拉取

  • 站点已设置并正常工作。它位于c:\inetpub\wwwroot\sitename中
  • 此文件夹是使用我的远程桌面用户(管理员)克隆的。克隆是通过gitbash完成的,我知道SSH密钥位于管理员的home/.SSH目录中
  • 此文件夹可由IIS\u IUSRS写入
  • 我还将密钥复制到
    C:\ProgramFiles(x86)\Git\.ssh
    中,如下所述()
我在该文件夹中有一个PHP脚本,其中包含“pull”代码:

exec(''C:\ProgramFiles(x86)\Git\bin\Git.exe“pull 2>&1',$output);
变量转储(输出);
回音'--完成--';
页面只是挂起,浏览器上有加载图标。没有输出

但如果“状态”是:

我得到了预期的输出

我猜这可能是由于SSH密钥的许可。不过,使用Windows CMD(而不是Git Bash)运行这两个脚本是可行的

所以我的问题是:

  • 我不确定是否未加载SSH密钥,因为我无法在浏览器上看到错误
  • 我不确定我一开始的方向是否正确
  • 我不敢再胡闹了,因为这是为了生产


    谢谢

    很可能您已经为当前用户存储了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--';