PHP 版本升级后扩展模块 mysqli 无法加载报错如何解决

文章导读
PHP 版本升级后 mysqli 扩展无法加载,通常是因为新版本的 PHP 需要重新安装或启用对应的扩展包。最推荐的处理方向是根据新 PHP 版本安装匹配的 php-mysqli 扩展,并在 php.ini 中启用,注意区分 CLI 和 FPM 的配置文件路径。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 常见问题
  7. G 参考来源
A A

PHP 版本升级后 mysqli 扩展无法加载,通常是因为新版本的 PHP 需要重新安装或启用对应的扩展包。最推荐的处理方向是根据新 PHP 版本安装匹配的 php-mysqli 扩展,并在 php.ini 中启用,注意区分 CLI 和 FPM 的配置文件路径。

先说结论:升级 PHP 后扩展丢失属于预期行为,需通过包管理器重装扩展并重启服务。

  • 先确认:当前 PHP 版本号和 php.ini 配置文件路径
  • 先处理:使用包管理器安装对应版本的 php-mysqli 扩展包
  • 再验证:执行 php -m 命令检查扩展列表是否包含 mysqli

命令速用版

根据操作系统包管理器选择对应命令,安装完成后需重启 Web 服务。

# Ubuntu/Debian 系统
sudo apt install php-mysqli

# CentOS/RHEL 系统
sudo yum install php-mysqli

# 重启 PHP-FPM
sudo systemctl restart php-fpm

# 重启 Nginx/Apache
sudo systemctl restart nginx
sudo systemctl restart httpd

为什么会这样

PHP 扩展模块与 PHP 核心版本存在二进制兼容性依赖,升级核心后旧扩展无法加载。

PHP 的扩展模块(Extension)在编译时依赖于特定版本的 PHP 内部 API(Zend API)。当 PHP 主版本升级(例如从 7.4 到 8.0)时,内部结构发生变化,旧版本的扩展二进制文件不再兼容。此外,Linux 发行版的软件包策略通常将 PHP 核心与扩展分开打包,升级 php 包不会自动升级 php-mysqli 包,导致扩展缺失。

分步处理

按顺序执行版本检查、扩展安装、配置启用和服务重启,每步完成后检查状态。

步骤 1:确认 PHP 版本和配置文件路径

执行命令查看当前 CLI 和 Web 环境的 PHP 版本及加载的 ini 文件路径,避免配置错位置。

php -v
php `--ini`

步骤 2:安装匹配的 mysqli 扩展

使用系统包管理器安装与当前 PHP 版本匹配的扩展包,包名通常包含版本号。

# 示例:PHP 8.1
sudo apt install php8.1-mysqli

步骤 3:检查 php.ini 配置

确认扩展已在配置文件中启用,部分系统默认启用,部分需手动添加 extension=mysqli。

PHP 版本升级后扩展模块 mysqli 无法加载报错如何解决
grep -i mysqli /etc/php/8.1/cli/php.ini
grep -i mysqli /etc/php/8.1/fpm/php.ini

步骤 4:重启服务

修改配置或安装扩展后,必须重启 PHP-FPM 或 Web 服务器才能生效。

怎么验证是否生效

通过命令行模块列表和 phpinfo 页面双重验证,确保 CLI 和 Web 环境均加载成功。

命令行验证:

php -m | grep mysqli

输出中包含 mysqli 字样即表示 CLI 环境加载成功。

Web 环境验证:

创建包含<?php phpinfo(); ?>的测试页面,在浏览器访问并搜索 mysqli 字段,确认扩展状态为 enabled。

常见坑

多版本共存时容易配错路径,权限不足会导致重启失败,需仔细核对。

  • 多版本冲突:服务器同时存在 PHP 7.4 和 8.0 时,确保安装的是 8.0 对应的扩展包,配置文件路径也不同
  • CLI 与 FPM 不一致:命令行正常但网页报错,通常是因为只修改了 CLI 的 php.ini 而忽略了 FPM 的配置
  • 权限问题:手动编译扩展时,若文件归属权不是 www-data,可能导致 Web 服务无法读取

常见问题

mysqli 和 mysql 扩展有什么区别?

mysql 扩展已在 PHP 7.0 移除,必须使用 mysqli 或 PDO_MySQL。

安装后 php -m 仍然看不到 mysqli 怎么办?

检查是否编辑了错误的 php.ini 文件,或存在多个 php.ini 配置文件优先级冲突。

源码编译安装 PHP 后如何添加 mysqli?

需重新编译 PHP 或使用 docker-php-ext-install 命令,包管理器命令对源码安装无效。

参考来源

  • PHP Official Documentation - MySQLi Installation: https://www.php.net/manual/en/mysqli.installation.php
  • Ubuntu Documentation - PHP Packages
  • CentOS Documentation - PHP Module