git pull 错误 libcurl.so.3 not found

git pull 错误 libcurl.so.3 not found

我有一个来自 github 存储库的 php 脚本,git pull在我的 webservice hook url 中设置如下:

<?php
  echo shell_exec('~/git/usr/bin/git pull 2>&1');
?> 

当我在浏览器上打开此脚本时,出现以下错误:

git-remote-https: error while loading shared libraries: libcurl.so.3: cannot open shared object file: No such file or directory

我在运行 CentOS 5.9 版的 godaddy 服务器上并uname -mrs生成:

Linux 2.6.18-348.3.1.el5PAE i686

当我尝试这样做时:

yum install curl

我收到错误消息,yum无法找到该命令。

我真的不知道这里发生了什么,因为当我 ssh 进入我的服务器并git pull从终端执行操作或运行类似的脚本时php myscript.php,它工作正常并且所有更改都被获取。当我在浏览器中运行它时,依赖项如何改变?

非常感谢任何帮助。

答案1

首先,这不是Ubuntu相关的问题,请参阅我可以在这里问什么话题?– 您询问的是在共享主机上的 CentOS 上运行的 PHP 脚本。任何一个Unix 和 Linux,堆栈溢出,服务器故障, 或者其他 Stack Exchange 站点更适合回答这个问题。

不管怎样,你似乎在某种程度上使用不同的 URL 从 GitHub 中提取;git-remote-https需要curlHTTPS 访问。使用 SSH 或 Git(只读)协议,即[email protected]:user/repository.gitgit://github.com/user/repository.git;尝试更改远程 URL 或再次克隆存储库。另外,请确保 Git 在正确的目录中执行,例如添加cd /my/repo;shell_exec命令。另外,最好指定远程分支进行自动拉取,即git pull origin master.

GoDaddy 可能会限制 PHP 脚本对某些库的访问,这也会影响在 PHP 上下文中执行的 shell 脚本。如果其他一切都失败了,您可以考虑轮询远程存储库,即git pull使用 Cron 定期执行。

答案2

yum install curl

我收到错误消息,无法找到命令 yum

你是root?你的可能$PATH不包含吗/sbin:/usr/sbin?尝试/sbin/yum/usr/sbin/yum确保这不是$PATH问题。

我不是 CentOS 专家,但如果您实际上正在工作root,并且yum确实没有安装和工作,那么您的系统可能会严重损坏。据我所知,yum它是 CentOS 的默认包管理器,绝对应该存在并且可以工作。

~/git/usr/bin/git

这是一条非常奇怪的道路。看来您手动将git包提取到您的主目录中?

error while loading shared libraries: libcurl.so.3

好吧,如果您手动提取了该包,那么它现在可能缺少curlgit包所依赖的库。您也可以尝试提取该库,但仅将其放入您的主目录中并不会神奇地使其工作...您可能需要摆弄才能$LD_LIBRARY_PATH使其工作,根据我的经验,这并不容易。

如果你可以开始yum工作,然后使用它正确安装 `git 包,它就会为你解决这个问题。

相关内容