Class ZipArchive not found,安装zip扩展

上传excel文件,进行导入数据操作时,本地Windows开发环境没有问题,服务器上报 Class ZipArchive not found 错误提示。

查询发现 Linux服务器上,PHP 缺少 zip扩展。(php5.6  非yum安装)

安装zip以及依赖libzip

libzip下载地址:Download · libzip

zip下载地址:http://pecl.php.net/package/zip

下载扩展包:

# cd /usr/src/

// 这是当前libzip版本,但是里面没有 configure文件
// 在执行后续 生成 configure等文件时,有报错,无法生成,有时间等待后续研究
# wget https://libzip.org/download/libzip-1.7.1.tar.gz
没有配置文件可以运行下 ./configure
生成看看

Linux下各种依赖都已经安装,是因为没有找到makefile。

如果是自己写的,确定在当前目录下;如果是源码安装,先运行./configure,生成makefile,再执行make,即可正常运行。

我实际用的下面这个libzip版本,这个里面有 configure文件,可以直接运行

# wget https://nih.at/libzip/libzip-1.2.0.tar.gz
# tar -zxvf libzip-1.2.0.tar.gz

# wget http://pecl.php.net/get/zip
# tar -zxvf zip

进入扩展包,进行编译安装:

# cd libzip-1.2.0/
// 由于此包内,存在 configure等文件,可以直接进行编译安装
# make
# make install

// 若没有报错,进行下一步zip安装
# cd zip-1.21.0/
// 根据本机 php安装路径下phpize 来生成 configure等文件
# /www/server/php/73/bin/phpize

// 生成 configure等文件后,执行
# ./configure --with-php-config=/www/server/php/73/bin/php-config
// 执行后,进行编译
# make
# make install

在zip扩展 make 编译时,若出现  /usr/local/include/zip.h:59:21: fatal error: zipconf.h: No such file or dire... 提示,找不到 zipconf.h文件

// 解决方法:直接手动复制过去即可
# cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
// 再进行 编译和安装
# make && make install

在 安装后,会提示 安装完毕的扩展路径,如:/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/zip.so

在提示路径下,找到 zip.so 扩展就安装成功了。

但,并不代表可以用了。下一步,找到 php.ini 文件进行修改。

# Off 改为 On
zlib.output_compression = On

# 添加扩展
extension=/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/zip.so

修改完 php.ini 文件后,记得 重启 php服务。

// 重启php服务
# service php-fpm restart

注意:可以通过 phpinfo(),查看 php.ini 文件所在位置,也可以查看 zip及zlib 扩展是否安装成功。

猜你喜欢

转载自blog.csdn.net/xgocn/article/details/126364151