CentOS 7.6.1810下Remi-PHP72仓库zip.so加载失败及October CMS更新问题求助
解决October CMS更新时ZipArchive类找不到及zip.so加载失败的问题
咱们一步步来拆解你的问题,核心根源是PHP的zip扩展与系统libzip库版本不兼容,先从确认系统架构开始,再逐步解决扩展加载问题:
一、绝对确认系统架构为x86_64
不用猜,直接用这两个命令就能100%确认:
- 查看系统内核架构:
输出如果是uname -mx86_64,就说明是64位架构。 - 验证已安装包的架构(以RHEL/CentOS为例,Debian/Ubuntu用
dpkg --print-architecture):
所有非noarch的包都会显示rpm -qa --qf "%{NAME} %{ARCH}\n" | grep -v noarchx86_64,就能彻底确认系统只运行64位可执行文件。
二、核心问题分析:undefined symbol: zip_libzip_version
你看到的这个警告,本质是PHP的zip扩展编译时依赖的libzip版本,和当前系统安装的libzip版本不匹配——PHP 7.0及以上版本要求libzip至少是1.1.0版本,而很多系统默认源的libzip版本偏低,导致扩展加载时找不到对应的符号。
三、分步解决方法
1. 检查当前系统libzip版本
执行命令查看:
# RHEL/CentOS系 rpm -q libzip # Debian/Ubuntu系 dpkg -l libzip*
如果版本低于1.1.0,就需要升级libzip。
2. 升级libzip并重新适配PHP zip扩展
情况1:用包管理器安装的PHP(如yum/dnf/apt)
RHEL/CentOS(依赖Remi源):
先确保Remi源已启用(以CentOS7为例):yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y然后安装对应PHP版本的zip扩展和适配的libzip:
# 比如PHP7.2,先卸载旧的zip扩展 yum remove php-zip -y # 安装适配PHP7.2的zip扩展(会自动安装兼容的libzip) yum install php72-php-zip -y注意:Remi源的PHP包命名是
phpXX-php-*,替换XX为你的PHP主版本号(70/71/72/73)。Debian/Ubuntu:
先更新源,然后安装高版本libzip和对应PHP的zip扩展:apt update apt install libzip-dev php-zip -y
情况2:编译安装的PHP
如果是自己编译的PHP,需要重新编译zip扩展,确保链接正确的libzip:
- 先安装高版本libzip(可以从源码编译安装,版本选1.1.0以上):
wget https://libzip.org/download/libzip-1.9.2.tar.gz tar zxf libzip-1.9.2.tar.gz cd libzip-1.9.2 ./configure --prefix=/usr/local/libzip make && make install - 进入PHP源码的
ext/zip目录,或者从PECL下载对应PHP版本的zip扩展源码,重新编译:phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-libzip=/usr/local/libzip make && make install - 确保php.ini或zip.ini中启用了zip扩展(带不带
.so后缀都可以,PHP会自动识别)。
3. 验证修复结果
执行以下命令,确认zip扩展加载成功:
php -m | grep zip
如果输出zip,说明扩展加载正常,此时再运行October CMS的更新命令,应该就能解决找不到ZipArchive类的问题了。
补充:关于zip.ini的.so后缀问题
Linux下PHP的extension配置项,带不带.so后缀都有效,所以你去掉后缀没用是因为核心问题不在配置写法,而是扩展本身与系统库不兼容,不用在这个点上浪费时间啦。
内容的提问来源于stack exchange,提问作者Plastopian
相关产品推荐
相关产品推荐

