gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:09:44 26 4
gpt4 key购买 nike

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

我有一个 Windows 2008 R2,我希望能够在将更改推送到外部 GIT 存储库后通过 PHP 脚本自动 pull 。

  • 该站点已设置并正常运行。它位于 c:\inetpub\wwwroot\sitename
  • 此文件夹是使用我的远程桌面用户(管理员)克隆的。克隆是通过 Git Bash 完成的,我知道 SSH key 位于管理员的 home/.ssh 目录中。
  • 此文件夹可由 IIS_IUSRS
  • 写入
  • 我还将 key 复制到 C:\Program Files (x86)\Git\.ssh如此处所述(Git can't find .ssh)

  • 我在该文件夹中有一个带有“pull ”代码的 PHP 脚本:

    exec('"C:\Program Files (x86)\Git\bin\git.exe" pull 2>&1', $output);
    var_dump($output);
    echo '--done--';

    该页面只是卡在浏览器上的加载图标上。没有输出。

    但如果做“状态”:
    exec('"C:\Program Files (x86)\Git\bin\git.exe" status 2>&1', $output);
    var_dump($output);
    echo '--done--';

    我得到了预期的输出。

    我猜这可能是由于 SSH key 的权限。使用 Windows CMD(不是 Git Bash)运行这两个脚本虽然有效

    所以我的烦恼是:
  • 我不确定是否是未加载 SSH key ,因为我在浏览器上看不到错误
  • 我不确定我是否从正确的方向开始。

  • 我不敢进一步摆弄,因为这是为了生产。

    谢谢!

    最佳答案

    很可能您已经为当前用户存储了 git 凭据,但是当 Web 服务器 (IIS_IUSRS) 执行 git 命令时,没有凭据,因此要求输入用户名和密码。这然后挂起脚本。

    你可以试试:

  • 通过管道将用户名和密码传递给进程编辑:这对我不起作用,因为 git 创建了多个未绑定(bind)到管道的子进程。
  • 将凭据放入 _netrc 文件并将其保存在 IIS 用户的主目录中(请参阅 C:\Windows\ServiceProfiles...)
  • 以 IIS 用户身份启动控制台,使用 git 命令并使用该用户的凭据助手存储凭据。

  • 请参阅此处了解如何存储 Git 凭据: https://confluence.atlassian.com/display/STASH/Permanently+authenticating+with+Git+repositories

    关于php - 在 IIS 上通过 PHP 设置 git 部署时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22165150/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com