首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >解决PHP Warning: Module ‘zip’ already loaded in Unknown on line 0 扩展加载错误的完整方案-其他扩展

解决PHP Warning: Module ‘zip’ already loaded in Unknown on line 0 扩展加载错误的完整方案-其他扩展

原创
作者头像
卓伊凡
发布于 2025-07-21 17:08:35
发布于 2025-07-21 17:08:35
5970
举报

解决PHP Warning: Module ‘zip’ already loaded in Unknown on line 0 扩展加载错误的完整方案-其他扩展通用卓伊凡

最近我们真的是因为一个问题解决就要衍生另一个问题,不过也是好事情,不断提升和学习,知识逐渐丰富,对疑难杂症处理会变得得心应手,所以每次的成功解决方案都要记录,并且我发现很多同行都在搜索类似问题,因此分享是肯定有作用滴。

PHP Warning: Module ‘zip’ already loaded in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library ‘ixed.8.0.lin’ (tried: /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/ixed.8.0.lin (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/ixed.8.0.lin: cannot open shared object file: No such file or directory), /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/ixed.8.0.lin.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/ixed.8.0.lin.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library ‘/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/redis.so’ (tried: /www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/redis.so (/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/redis.so: undefined symbol: zend_string_init_interned), /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718//www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/redis.so.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718//www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/redis.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library ‘swoole.so’ (tried: /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/swoole.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/swoole.so: cannot open shared object file: No such file or directory), /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/swoole.so.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/swoole.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library ‘/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/fileinfo.so’ (tried: /www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/fileinfo.so (/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/fileinfo.so: undefined symbol: zend_string_init_interned), /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718//www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/fileinfo.so.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718//www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/fileinfo.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 zip 遇到的错误包含多个 PHP 扩展加载问题,我将分别解决每个问题并提供完整的操作步骤。

问题分析

  1. zip 模块重复加载:Module 'zip' already loaded
  2. ixed 扩展加载失败:Unable to load dynamic library 'ixed.8.0.lin'
  3. redis 扩展版本不匹配:Unable to load dynamic library 'redis.so'
  4. swoole 扩展缺失:Unable to load dynamic library 'swoole.so'
  5. fileinfo 扩展问题:Unable to load dynamic library 'fileinfo.so'

解决方案

1. 解决 zip 模块重复加载问题

代码语言:javascript
复制
# 查找所有加载 zip 模块的配置
grep -r "extension.*zip" /www/server/php/72/etc/

# 编辑主 php.ini 文件
nano /www/server/php/72/etc/php.ini

在 php.ini 中:

  • 确保只有一行 extension=zip.so
  • 注释或删除其他所有 extension=zip.so 的行

确保了没有重复 但是会报错

确保了 所有行里面都没有重复

代码语言:javascript
复制
# 检查是否编译进 PHP 核心
php -i | grep "Configure Command" | grep zip

# 如果已编译进核心,则完全删除 php.ini 中的 extension=zip.so

2. 解决 ixed 扩展问题

代码语言:javascript
复制
# 完全移除 ixed 扩展引用
nano /www/server/php/72/etc/php.ini

查找并删除或注释掉:

代码语言:javascript
复制
; extension=ixed.8.0.lin

3. 解决 redis 扩展问题

代码语言:javascript
复制
# 卸载现有 redis 扩展
pecl uninstall redis

# 安装正确版本的 redis 扩展
# 对于 PHP 7.2
pecl install redis-5.3.7

# 或者通过宝塔面板重新安装
# 宝塔面板 → PHP 7.2 → 安装扩展 → redis

4. 解决 swoole 扩展问题

代码语言:javascript
复制
# 安装 swoole 扩展
# 对于 PHP 7.2
pecl install swoole-4.8.11

# 或者通过宝塔面板
# 宝塔面板 → PHP 7.2 → 安装扩展 → swoole

5. 解决 fileinfo 扩展问题

代码语言:javascript
复制
# 重新安装 fileinfo 扩展
# 对于 PHP 7.2
apt-get install php7.2-fileinfo

# 或者通过宝塔面板
# 宝塔面板 → PHP 7.2 → 安装扩展 → fileinfo

完整操作流程

  1. 备份当前配置
代码语言:javascript
复制
cp /www/server/php/72/etc/php.ini /root/php.ini.bak
  1. 清理错误配置
代码语言:javascript
复制
nano /www/server/php/72/etc/php.ini

删除或注释以下内容:

代码语言:javascript
复制
; extension=ixed.8.0.lin
; extension=redis.so
; extension=swoole.so
; extension=fileinfo.so
  1. 通过宝塔面板重新安装扩展
    • 登录宝塔面板
    • 进入「软件商店」
    • 找到 PHP 7.2 → 「设置」
    • 在「安装扩展」中重新安装 redis、swoole、fileinfo
  2. 检查 zip 模块
代码语言:javascript
复制
php -m | grep zip

如果显示两次,按照前面方法解决重复加载问题

  1. 重启服务
代码语言:javascript
复制
/etc/init.d/php-fpm-72 restart
/etc/init.d/nginx restart

验证修复结果

代码语言:javascript
复制
php -m | grep -E 'zip|redis|swoole|fileinfo'
php -i | grep extension_dir

常见问题处理

  1. 如果扩展安装失败:
代码语言:javascript
复制
# 安装编译依赖
apt-get install -y php7.2-dev pkg-config libssl-dev

# 清理旧的编译文件
pecl uninstall redis
rm -rf /tmp/pear
  1. 如果仍然报错:
代码语言:javascript
复制
# 查看 PHP 错误日志
tail -f /www/server/php/72/var/log/php-fpm.log
  1. 版本冲突问题:
代码语言:javascript
复制
# 确保命令行和网站使用相同 PHP 版本
update-alternatives --config php

针对 这个命令可以说到说到

update-alternatives --config php 命令详解

命令作用

update-alternatives --config php 是 Linux 系统中用于管理多个 PHP 版本切换的命令,主要功能是:

  1. 显示系统中安装的所有可用 PHP 版本
  2. 允许用户交互式选择默认的 PHP 命令行版本
  3. 管理系统中的 PHP 命令符号链接

工作原理

该命令通过维护一个”备选方案”系统来管理不同版本的 PHP:

  1. 当系统安装多个 PHP 版本时,每个版本都会在 /usr/bin/ 下有对应的二进制文件
  2. update-alternatives 创建 /usr/bin/php 的符号链接指向当前选择的版本
  3. 所有通过命令行执行的 php 命令都会使用当前选定的版本

典型使用场景

  1. 查看当前可用 PHP 版本:
代码语言:javascript
复制
update-alternatives --config php

输出示例:

代码语言:javascript
复制
There are 2 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.0   80        auto mode
  1            /usr/bin/php7.4   74        manual mode
  2            /usr/bin/php8.0   80        manual mode

Press <enter> to keep the current choice[*], or type selection number:
  1. 切换 PHP 版本:
    • 运行命令后输入对应版本的编号
    • 按回车确认选择
  2. 验证当前 PHP 版本:
代码语言:javascript
复制
php -v

重要注意事项

  1. 仅影响命令行:
    • 这个命令只影响命令行执行的 PHP 版本
    • 不影响 Apache/Nginx 等 web 服务器使用的 PHP 版本
  2. 与宝塔面板的关系:
    • 宝塔面板管理的网站 PHP 版本不受此命令影响
    • 网站 PHP 版本需要在宝塔面板中单独设置
  3. 优先级系统:
    • 每个版本有优先级数字,数字高的会被设为”auto mode”默认
    • “manual mode”表示手动选择的版本
  4. 安装新版本后:
代码语言:javascript
复制
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 81
  1. 删除备选版本:
代码语言:javascript
复制
sudo update-alternatives --remove php /usr/bin/php7.4

在当前问题中的应用

涉及 PHP 7.2 和 8.0 的混合使用,可以通过此命令:

  1. 确认命令行默认使用的 PHP 版本
  2. 确保命令行和 web 服务器使用相同 PHP 版本
  3. 避免版本混淆导致的扩展加载错误

建议运行后选择与您网站相同的 PHP 版本(很可能是 7.2),然后重新尝试安装和配置扩展。

卓伊凡我听从建议,直接最终解决方案,卸载7.2

然后奉劝大家 尽量在服务器不要多版本安装php ,项目多,那么现在轻量云服务器便宜,尽量同版本的放一堆

软件行业版本问题 真的 太太太太严重了

不要学我们 几十个放一台,几十个 放一台, 我们估计服务器成本又要增加了哎, 现在面对很多老项目 直接重写 都比升级要好。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 解决PHP Warning: Module ‘zip’ already loaded in Unknown on line 0 扩展加载错误的完整方案-其他扩展通用卓伊凡
    • 问题分析
    • 解决方案
      • 1. 解决 zip 模块重复加载问题
      • 2. 解决 ixed 扩展问题
      • 3. 解决 redis 扩展问题
      • 4. 解决 swoole 扩展问题
      • 5. 解决 fileinfo 扩展问题
    • 完整操作流程
    • 验证修复结果
    • 常见问题处理
  • update-alternatives --config php 命令详解
    • 命令作用
    • 工作原理
    • 典型使用场景
    • 重要注意事项
    • 在当前问题中的应用
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档