解决:可选的模组zip未被安装或已被禁用

wordpress升级到5.4版本发现加入了站点健康提示,可以直观的发现一些问题,看到了就想去解决掉。

缺少一个或多个推荐的模组

……
警告 可选的模组imagick未被安装或已被禁用。
警告 可选的模组zip未被安装或已被禁用。

第一个警告很好解决,yum安装后重启一下php-fpm就可以了,刷新页面就只有一个缺少模组ZIP提示了。命令如下:

# yum install php-imagick

主要是第二个zip扩展,有点麻烦,需要自己下载编译安装,主要存在依赖包的问题及一些未知麻烦,咱一步步来。

# wget http://pecl.php.net/get/zip-1.18.2.tgz
# tar -zxvf zip-1.18.2.tgz
# cd zip-1.18.2
# /usr/bin/phpize
# ./configure --with-php-config=/usr/bin/php-config
# make
# make install
# make test
# vim /etc/php.ini //zip安装成功后在php.ini中加入一行:
extension=zip.so

备注:以上目录可能会不一样,根据php安装路径来的,而且/usr/bin/phpize要在刚才解压的目录下运行,所以它的上一步是切换到解压的目录。后面这几个命令如果没有任何错误,算人品极好了。

错误1:

./configure的时候可能会出现错误:configure: error: Please reinstall the libzip distribution

这个错误是因为系统中的libzip版本太低,或者根本不存在。

# yum remove libzip
# wget https://libzip.org/download/libzip-1.6.1.tar.gz
# tar -zxvf libzip-1.6.1.tar.gz
# cd libzip-1.6.1
# mkdir build && cd build && cmake .. && make && make install

错误2:

cmake: command not found或者cmake版本太低。

首先通过yum安装一下看是否满足版本需求,不行就卸载后继续下载编译安装。这一步除了下载很慢没有出现其它的未知错误。

# yum install cmake
# yum remove cmake
# wget https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0.tar.gz
# tar -zxvf cmake-3.17.0.tar.gz
# cd cmake-3.17.0
# ./bootstrap
# make && make install
# cmake --version
make && make install
cmake –version

cmake安装好后,回过头去再装libzip,再装ZIP,依赖关系都解决了,中途没再出现什么问题,最后make test完成,修改/etc/php.ini文件,加入一句extension=zip.so保存重启php-fpm,理论上到此结束,如果还是不行大概率是下面错误3中的问题,zip.so没有加载成。

错误3:

-have your system administrator add LIBDIR to `/etc/ld.so.conf’
……
Warning: PHP Startup: Unable to load dynamic library ‘zip.so’ (tried: /root/zip-1.18.2/modules/zip.so (libzip.so.5: cannot open shared object file: No such file or directory), /root/zip-1.18.2/modules/zip.so.so (/root/zip-1.18.2/modules/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

make test 中的错误提示

Bug #72434: ZipArchive class Use After Free Vulnerability in PHP’s GC algorithm and unserialize [tests/bug72434.phpt]

make test中的错误提示

PHP Warning: PHP Startup: Unable to load dynamic library ‘zip.so’ (tried: /usr/lib64/php/modules/zip.so

执行php -v的错误提示

通过错误提示可大概知道虽然ZIP已经安装了,但配置还是有问题,php加载zip不成功,通过phpinfo页面也看不到zip扩展,wordpress中的提示依旧在。

# vim /etc/ld.so.conf //添加以下四行保存:
/usr/lib64
/usr/lib
/usr/local/lib
/usr/local/lib64
# ldconfig -v //同步动态库
# systemctl restart php-fpm nginx
# php -v //再无错误
# php -m //最下面出现ZIP,也可以看phpinfo页面出现zip模块

补充:

虽然安装好了,但回想起来,要是yum能直接安装就方便多了,搜索了一下,原来也可以:

根据版本先查找一下是否带了zip包

yum search php73|grep zip

其实一般都能搜索到,如果有就直接安装

yum -y install php73-php-pecl-zip.x86_64


评论

发表回复

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