You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 7.6.1810下Remi-PHP72仓库zip.so加载失败及October CMS更新问题求助

解决October CMS更新时ZipArchive类找不到及zip.so加载失败的问题

咱们一步步来拆解你的问题,核心根源是PHP的zip扩展与系统libzip库版本不兼容,先从确认系统架构开始,再逐步解决扩展加载问题:

一、绝对确认系统架构为x86_64

不用猜,直接用这两个命令就能100%确认:

  1. 查看系统内核架构:
    uname -m
    
    输出如果是x86_64,就说明是64位架构。
  2. 验证已安装包的架构(以RHEL/CentOS为例,Debian/Ubuntu用dpkg --print-architecture):
    rpm -qa --qf "%{NAME} %{ARCH}\n" | grep -v noarch
    
    所有非noarch的包都会显示x86_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:

  1. 先安装高版本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
    
  2. 进入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
    
  3. 确保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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:06:47