WordPress_可选的模组zip未被安装或已被禁用
PHP Zip模组是什么
PHP Zip模组是一个用于创建、读取和提取ZIP文件的PHP扩展。它提供了丰富的功能,包括创建和解压ZIP文件、修改ZIP文件内容、设置密码保护、支持多种压缩方法等
1.下载zip包并安装
#zip包各个版本下载地址:http://pecl.php.net/package/zip
#在这里我选择1.19.2版本的zip包
wget http://pecl.php.net/get/zip-1.19.2.tgz
tar xf zip-1.19.2.tgz
cd zip-1.19.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
#报错

2.安装依赖包
#libzip的版本太低,需升级
wget https://libzip.org/download/libzip-1.10.1.tar.gz

#报错,只能直接下载,然后上传到LINUX

tar -xf ./libzip-1.10.1.tar.gz
cd ./libzip-1.10.1
mkdir build
cd build
cmake ..

#又出现报错,提示CMake版本低
wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz
tar xf cmake-3.6.2.tar.gz
cd cmake-3.6.2
./bootstrap #编译安装
gmake && gmake install
yum remove -y cmake #删除原来的cmake
ln -s /usr/local/bin/cmake /usr/bin/
cmake --version
cmake version 3.6.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
#再次运行安装
cd libzip-1.10.1
cd build
cmake ..
make
如果出现这个错误
/root/libzip-1.10.1/lib/zip_name_locate.c: In function ‘_zip_name_locate’:
/root/libzip-1.10.1/lib/zip_name_locate.c:85:41: error: ‘strcasecmp’ undeclared (first use in this function)
cmp = (flags & ZIP_FL_NOCASE) ? strcasecmp : strcmp;
^
/root/libzip-1.10.1/lib/zip_name_locate.c:85:41: note: each undeclared identifier is reported only once for each function it appears in
make[2]: *** [lib/CMakeFiles/zip.dir/zip_name_locate.c.o] Error 1
make[1]: *** [lib/CMakeFiles/zip.dir/all] Error 2
make: *** [all] Error 2
#这个错误是因为strcasecmp函数没有被正确识别,通常是因为缺少头文件包含或编译环境未启用POSIX扩展。
1.添加”-D_GNU_SOURCE”编译选项
strcasecmp是POSIX标准函数,需要再源码中启用GNU扩展。再编译时通过CFLAGS
cd libzip-1.10
rm -rf build && mkdir build && cd build
cmake -DCMAKE_C_FLAGS="-D_GNU_SOURCE" ..
make && make install
3.再次安装ZIP
[root@LNMP ~]# cd zip-1.19.2
[root@LNMP zip-1.19.2]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20190902
Zend Module Api No: 20190902
Zend Extension Api No: 320190902
[root@LNMP zip-1.19.2]#./configure --with-php-config=/usr/local/php/bin/php-config
[root@LNMP zip-1.19.2]# make && make install
#如果出现下面的错误(没出现可忽略)
In file included from /root/zip-1.19.2/php8/php_zip.c:28:0:
/usr/local/php/include/php/ext/standard/php_filestat.h:44:13: note: declared here
PHPAPI void php_stat(zend_string *filename, int type, zval *return_value);
^
make: *** [php8/php_zip.lo] Error 1
有可能是你当前的php版本(例如php8)与这个版本zip不兼容,可以尝试下载最新版zip

#安装完成后,重启php-fpm
service php-fpm restart
#发现情况还是一样,应该是zip没安装成功

#经查,发现php.ini没添加相关模块
vim /usr/local/php/php.ini

ln -s /usr/local/php/lib/php/extensions/no-debug-zts-20190902 /usr/lib/zip.so
ln -s /usr/local/php/lib/php/extensions/no-debug-zts-20190902 /usr/lib64/zip.so
ldconfig /usr/local/lib
ldconfig /usr/local/lib64
service php-fpm restart
php -m | grep zip
zip
#已经有zip了
4.可能会出现的问题
#某次重启之后,出现的错误:

PHP Startup: Unable to load dynamic library 'zip.so'
(tried: /usr/local/php/lib/php/extensions/no-debug-zts-20190902/zip.so (libzip.so.5: cannot open shared object file: No such file or directory), /usr/local/php/lib/php/extensions/no-debug-zts-20190902/zip.so.so (/usr/local/php/lib/php/extensions/no-debug-zts-20190902/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
#经查发现
/usr/local/php/lib/php/extensions/no-debug-zts-20190902/zip.so
是有文件的

因此问题,应该不在这里
参考链接:
PHP版本 7.3.X 无法加载动态库的问题
编辑/etc/ld.so.conf文件把库文件目录加上
vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/lib64
/usr/lib
/usr/local/lib
/usr/local/lib64
sudo ldconfig
重启php-fpm,查看警告是否消失

#如果你的php版本是8的华,有可能出现如下报错,缺少”libzip.so.5″
service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm [06-Apr-2025 01:09:53] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library 'zip.so' (tried: /usr/local/php/lib/php/extensions/no-debug-non-zts-20210902/zip.so (libzip.so.5: cannot open shared object file: No such file or directory), /usr/local/php/lib/php/extensions/no-debug-non-zts-20210902/zip.so.so (/usr/local/php/lib/php/extensions/no-debug-non-zts-20210902/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
#则可以通过安装remi库来解决
# 安装 Remi 仓库
yum install https://rpms.remirepo.net/enterprise/remi-release-$(rpm -E %rhel).rpm
# 启用 Remi 仓库
yum-config-manager --enable remi
# 安装 libzip5
yum install libzip5 libzip-devel
# 安装 PHP-Zip 扩展(自动处理依赖)
yum install php-zip
#再重启查看是否有报错
service php-fpm restart
再检查wordpress的健康问题是否也少了一个