我有一个来自 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
需要curl
HTTPS 访问。使用 SSH 或 Git(只读)协议,即[email protected]:user/repository.git
或git://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
好吧,如果您手动提取了该包,那么它现在可能缺少curl
该git
包所依赖的库。您也可以尝试提取该库,但仅将其放入您的主目录中并不会神奇地使其工作...您可能需要摆弄才能$LD_LIBRARY_PATH
使其工作,根据我的经验,这并不容易。
如果你可以开始yum
工作,然后使用它正确安装 `git 包,它就会为你解决这个问题。