PHP8安装ZIP扩展,使用源码安装PHP扩展中的 ZIP扩展

PHP扩展 安装,在Centos中使用源码安装 ZIP扩展

在Centos中安装 中的 ,PHP从7.X升级到PHP8.X后,有两个php扩展失效,一个是imagick扩展,另外一个就是ZIP扩展,imagick扩展卸载掉原扩展后,使用pecl命令在官方的php扩展库中安装即可,在安装ZIP扩展时,遭遇安装失败,发现是libzip的问题。下面我们一起安装ZIP扩展。

 

 

在安装zip扩展之前,先安装libzip,前往libzip官网下载最新版本的libzip。

libzip官网:https://libzip.org/

PHP8安装ZIP扩展,使用源码安装PHP扩展中的 ZIP扩展-1

Centos8安装ZIP扩展

PHP7升级PHP8后安装zip扩展,先卸载之前安装过的zip和libzip。

dnf remove zip libzip

在卸载libzip时,会连带卸载掉php-pecl-zip,这个是之前PHP7安装的zip扩展,必须要卸载掉。

卸载完毕之后重新安装zip和libzip

dnf install zip

这个zip是zip主程序,在安装php扩展前必须要先安装zip主程序。

libzip不能使用centos8的官方软件库,centos8版本比较老,官方软件库的libzip版本太低,在安装zip扩展时会报错无法安装。

接下来从libzip官网下载最新版本的libzip

#下载libzip
wget https://libzip.org/download/libzip-1.9.2.tar.xz
#解压libzip
tar -xvf libzip-1.9.2.tar.xz
#进入libzip文件夹准备安装
cd libzip-1.9.2

在安装libzip之前,需要先安装cmake3,libzip需要cmake3来编译安装。

dnf install -y cmake3

最后安装libzip

#建立build后,进入该文件夹
mkdir build && cd build
#进行编译
cmake ..
#进行安装libzip
make && make install

libzip安装成功后,进行安装zip扩展。

pecl install zip

或者使用zip扩展源码进行安装。

在PHP官网的PHP扩展网站上https://pecl.php.net/package/zip下载最新版的php扩展

可以使用pecl命令安装

wget https://pecl.php.net/get/zip-1.21.1.tgz
pecl install zip-1.21.1.tgz

也可以使用编译安装

wget https://pecl.php.net/get/zip-1.21.1.tgz
tar -xvf zip-1.21.1.tgz
cd zip-1.21.1
phpize
./configure
make && make install

PHP8安装ZIP扩展,使用源码安装PHP扩展中的 ZIP扩展-1

zip扩展已经安装成功了,不过很多时候都会报错,使用 php -m 命令查看扩展是否安装正确,如果报错的话,还需要继续处理错误。

系统报错找不到libzip.so.5的解决方法

zip扩展安装完毕后,一般会遇到:无法加载动态库“zip.so”的错误。

PHP Warning: PHP Startup: Unable to load dynamic library ‘zip.so' (tried: /usr/lib64/php/modules/zip.so (libzip.so.5: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/zip.so.so (/usr/lib64/php/modules/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library ‘zip.so' (tried: /usr/lib64/php/modules/zip.so (libzip.so.5: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/zip.so.so (/usr/lib64/php/modules/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

 

加载zip.so时缺少libzip.so.5文件,需要libzip.so.5文件。

libzip.so.5文件正常的都安装在/usr/local/lib64下,zip扩展需要将libzip.so.5文件放在/usr/local/lib/下。

使用FTP工具将/usr/local/lib64文件夹下的libzip.so.5文件,复制到/usr/local/lib/文件夹下,将文件权限修改为755

还有一种方法是,将zip.so分别软链接在/usr/local/lib64 和 /usr/local/lib 目录下即可,通过idconfig 命令使其生效。

ln -s /usr/lib64/php/modules/zip.so /usr/local/lib64/zip.so && ldconfig
ln -s /usr/lib64/php/modules/zip.so /usr/local/lib/zip.so && ldconfig

PHP8安装ZIP扩展,使用源码安装PHP扩展中的 ZIP扩展-1

评分

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注