WordPress_可选的模组zip未被安装或已被禁用

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

#报错

image-20230908004547679

2.安装依赖包

#libzip的版本太低,需升级

wget https://libzip.org/download/libzip-1.10.1.tar.gz
image-20230908005045699

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

image-20230908005227185

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

#又出现报错,提示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

image-20250406232222492

#安装完成后,重启php-fpm

service php-fpm restart

#发现情况还是一样,应该是zip没安装成功

image-20230908094858848

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

vim /usr/local/php/php.ini
image-20230908101140537

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.可能会出现的问题

#某次重启之后,出现的错误:

image-20231216094310539

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

是有文件的

image-20231216094608350

因此问题,应该不在这里

参考链接:

https://blog.csdn.net/ren593669257/article/details/100019391

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,查看警告是否消失

image-20231216095138241

#如果你的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的健康问题是否也少了一个

发表回复

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