上传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 扩展是否安装成功。