【问题标题】:git pull with shell_execgit pull 与 shell_exec
【发布时间】:2018-08-21 20:20:34
【问题描述】:

我正在尝试在共享服务器上设置一个自动git pull,当我推送到 github 存储库时会触发它。

我设置了 github 存储库,我可以从本地计算机推送/拉取,当我通过服务器上的 ssh 登录时也是如此。

当我在控制台中输入git pull 时,它就像一个魅力,并且文件得到更新。但是当我使用 php shell_exec 时,我收到一条错误消息:

Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

这是我调用的php文件的内容:

$output = shell_exec('git pull 2>&1');
echo "<h1>Github pull</h1>";
echo "<pre>".$output."</pre>";

【问题讨论】:

    标签: php git ssh


    【解决方案1】:

    当您 ssh 进入服务器时,您正在使用另一个操作系统用户。 Web 服务器进程可能有自己的用户。您需要将 git 服务器的密钥添加到该网络服务器用户的已知主机列表中。

    【讨论】:

    • 我在远程服务器上生成了一个 ssh 密钥(使用 ssh-keygen)并将公钥添加到我的 github 帐户中。当我通过 ssh 登录时,我可以从远程服务器 git pull 。第一次,有一条消息表明密钥已添加到已知主机列表中。 shell_exec 命令是否有单独的用户?
    • 是的,shell_exec 以运行 PHP 进程的用户身份运行。有关其他说明,请参阅手册。 php.net/manual/de/function.shell-exec.php
    • 我在我的 php 文件中添加了echo get_current_user();,它给了我用户 xyz1234,ssh 的用户称为 ssh-xyz1234。我不知道如何或需要做什么才能将密钥添加到 xyz1234 用户
    • 顺便说一句,我没有 root 访问权限
    • 是共享主机吗?您可能需要联系您的服务器管理员。
    猜你喜欢
    • 2011-02-01
    • 2011-07-05
    • 2016-01-12
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多