coding code
change world

近期宝塔Linux版本安装的PHP7.3缺少ZIP

面板版本:BT-Panel 6.9.32 Beta

系统版本:CentOS 7.6 1810

问题现象:近期安装的 PHP-7.3 缺少 zip 扩展

原因分析:这个 Bug 实际上算是个历史遗留问题。2019年1月18日,有用户发现,PHP 更新到 7.3.1 就会报错:PHP模块重复加载。于是发帖报告的一个 Bug,帖子链接如下:
https://www.bt.cn/bbs/thread-21723-1-1.html
次日,河妖在论坛发帖,公布了问题原因和解决办法:
https://www.bt.cn/bbs/thread-21750-1-1.html

因早期安装的Php7.3是独立编译zip扩展,后续安装及升级是整合编译的,导致升级后会重复加载zip模块

因此,其后的PHP就不再单独编译ZIP扩展了。到了现在,半年多过去了,PHP 更新到了 7.3.8,ZIP 模块又不再整合了(不整合是对的,保持独立编译是最稳妥的方式),可是,却没有单独编译和安装ZIP扩展。

那么,解决办法也很简单,ZIP扩展本来就包含在软件包里,添加回来就可以了:

cd /www/server/php/73/src/ext/zip/
/www/server/php/73/bin/phpize
./configure --with-php-config=/www/server/php/73/bin/php-config
make && make install


然后,把以前从PHP配置文件里删去的行加回来:

echo "extension = zip.so" >> /www/server/php/73/etc/php.ini


最后重载一下 PHP 服务即可:

service php-fpm-73 reload

提示需要重新安装libzip库,应该是zip需要依赖libzip库

系统本身是有安装`libzip`库的(通过`yum info libzip`得知),但是这里还是提示,应该是版本问题,yum安装的是0.10.1版本,从官方获取最新的libzip版本

安装之前我们先删除旧版本

yum remove -y libzip
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make && make install

安装好libzip 1.2之后,我们再装zip扩展

继续下面的步骤:

cd /www/server/php/73/src/ext/zip/
 /www/server/php/73/bin/phpize ./configure --with-php-config=/www/server/php/73/bin/php-config make

上面的编译有错误:提示如下,找不到文件。

 /usr/local/include/zip.h:59:21: fatal error: zipconf.h: No such file or directory

添加软连接,即可解决

ln -s /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h

接下来执行编译安装:

 make install

结果出现提示如下:

Installing shared extensions:www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/

表示,我们已经成功安装zip扩展。最后一步就是写php.ini配置文件了。

我们修改php.ini文件在文件末尾添加: extension = /www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/zip.so

赞(0) 打赏
未经允许不得转载:卢云华个人日志 » 近期宝塔Linux版本安装的PHP7.3缺少ZIP
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏