一、事出原因
最近正准备使用RiPro的主题搭建一个WordPress的资源分享网站,购买会员后发现该主题仅支持PHP7.4,也没多想,反正就是一顿操作install呗,先在宝塔上安装PHP7.4,第一步就出了问题,如下图所示:
我们可以看到安装是失败的,向上可以看到相关提示:
No package 'libcurl' found
其实在这个错误提示之前还有其它的提示,因为本文是在解决好所有问题之后撰写的,错误图片并没有保存所有的,也不太好复现了,不过解决方案大同小异。
二、主机环境
-
操作系统:Ubuntu 20.04.3 LTS Linux 5.4.0-91-generic x86_64
-
服务商:阿里云
-
系统说明:因CentOS官网说以后不再更新了,所以后面才选择了Ubuntu,个人觉得Ubuntu还是有点臃肿,不过用得习惯就好;
三、解决过程
1、更新Nginx,解决GD依赖扩展
这个直接可以在宝塔内完成更新,但是更新又提示了错误,如下图所示:
找出错误定位,这里看如下代码:
the HTTP image filter module requires the GD library
该错误表明缺少了GD依赖扩展而导致的安装失败,我们可以在终端上键入如下代码以解决:
sudo apt-get update
sudo apt-get install libgd*
到这一步其实还是挺顺利的,GD依赖库的问题至此已解决;
2、安装libcurl库
libcurl是一个巨坑,我不太清楚是不是与系统有关系,网上大多数都是关于CentOS的解决方案,大致就是直接yum install来执行安装,换在Ubuntu上还是有点问题的,至少我是一直没有解决,宝塔有反馈sudo apt-get install libcurl*来解决,放在我这里依然无解,后来尝试使用手动方式进行安装。
curl官网下载地址:https://curl.se/download.html
官网给出的Source Archives如下:
curl 7.81.0, Released on the 5th of January 2022. Changelog for 7.81.0.
Ubuntu选择更多操作curl-7.81.0.tar.gz下载再进行解压缩安装操作,大致操作分如下5个步骤,我将逐一进行细致讲解:
sudo wget https://curl.se/download/curl-7.81.0.tar.gz
tar -zxvf curl-7.81.0.tar.gz
sudo ./configure
sudo make
sudo make install
1.wget
最基本的下载文件命令,下载完成后存在家目录内,下载较为缓慢,大概等待5分钟即可下载完成;
2.tar
下载完成之后对其进行解压处理,特别需要注意的是下载文件的路劲,默认在家目录中,解压也在其中,不熟悉Linux的读者可以反复使用cd和ls命令枚举文件;
切记需要进入curl的目录再进行configure命令
cd curl-7.81.0
sudo ./configure
4.make
这里当初没有保存执行的过程,但是一般都是一路通畅,没有什么疑难杂症;
make的基本用处是自动根据makefile里的指令来编译源文件
5.make install
将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径。默认/usr/local/bin
在安装过程中有一个比较容易忽略的一点,让选择TLS 后端,因为我的系统是TLS版本的,其它版本我没有尝试。
即在命令后方加入with参数,我们键入默认的即可,最终键入命令为:
sudo ./configure --without-ssl
至此直至安装完成,键入curl --help即可测试是否安装上去了。
3、编辑安装PHP7.4
至此即可在宝塔内安装PHP7.4,这里需要说一下,一定要选择编译安装而非极速安装,否则会出现一大堆莫名其妙的问题,我一开始并没有找出问题所在,说是提示ptar什么什么鬼的,看也看不懂,猜测是因为在【三、2、5】中采用的make编译的方式而导致的,所以编译安装即可解决。
最终会抛出类似于下方的代码:
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/
Starting php-fpm done
看到如下字样即说明已经完成了PHP7.4的安装了,看到Don't forget to run 'make test'也没多大关系,因为已经安装好了也不需要测试make了,不过查阅了一下相关资料,最终看到网上给出的方法:
cd /www/server/php/74/src/ext/phar/
cp ./phar.php ./phar.phar
四、结语
其实整篇文章看下来也没有多难,无非就几个命令而已,但是对于刚接触Linux的读者们来说还是有点磨人的,不过对于我自己来说,重要的并不是它有多难或者多简单,重要的是我很享受这种知其然且欲知其所以然的实操过程。
五、参考文献
curl官方网站
./configure, make, sudo make install 的含义
Ubuntu 20.04.3安装php7.4和更新Nginx失败
Linux libcurl安装及注意事项