gpt4 book ai didi

PHP:通过 HTTP 和命令行运行脚本时的结果不同

转载 作者:搜寻专家 更新时间:2023-10-31 21:28:22 25 4
gpt4 key购买 nike

我有一个 GIT 存储库,我正在使用 PHP 脚本从主分支中 pull 并更新服务器上的文件。这是一个非常简单的解决方案,只是为了测试它。我想在 github 上添加一个 webhook 以在成功推送后发送回调,这样我就可以从这个 repo 中提取数据。

脚本双向运行

  • 从命令行
  • 来自 HTTP 请求

不同之处在于,当我从 HTTP 运行它时,它不会 pull 新的更改,只是显示它是最新的并且不执行任何操作,即使我 100% 确定 repo 中有新的更改.输出来自 GIT 命令,因此我确定它可以正常工作,并且 Apache 具有运行该脚本文件和其中使用的命令的适当权限。

当我通过命令行(通过相同的脚本或只是干净的 git 命令)运行它时,一切都很好,脚本会提取新的更改并显示标准的 GIT 输出。

PHP代码:

echo "Pulling changes from master branch...\n";
$result = shell_exec('cd /var/git-test && git reset --hard HEAD && git pull');
if($result !== null){
echo $result;
}else{
echo $result;
echo "Error in Git pull comand";
}

我该如何解决?

最佳答案

sudo -u www-data php deploy.php 显示 www-data 用户没有在 github 上注册 ssh key ,无法执行 pull 。我无法切换到 www-data 用户,所以我生成了他的 key ,而没有像运行脚本 sudo -u www-data ssh-keygen -t rsa 那样切换到它。在 github 上注册他的 key 后,它就像一个魅力。

还有专家提示! shell_exec() 不显示当我在命令行中以另一个用户身份运行脚本时可见的所有输出。这真的很困惑,我花了很多时间来找出错误所在。

关于PHP:通过 HTTP 和命令行运行脚本时的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32985303/

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