phpmyadmin白屏或报错“mysqli extension is missing”90%是mysqli未加载,须确认web sapi实际加载的php.ini路径(如phpinfo()中“loaded configuration file”所示),取消extension=mysqli注释、校验extension_dir正确、重启对应服务,并通过phpinfo()验证模块存在。
phpmyadmin 白屏或报错 “the mysqli extension is missing” 时,90% 的情况不是配置写错了,而是 mysqli 扩展根本没加载进 php 进程——改对 php.ini 是关键一步,但必须确认改的是 web sapi 实际读取的那个文件。
确认当前 Web 服务加载的 php.ini 路径
CLI 模式下的 php --ini 输出和 Web 页面看到的不是同一个配置。只看 phpinfo() 页面里 “Loaded Configuration File” 这一行的路径才可靠。常见位置包括:
- Apache + mod_php:
/etc/php/*/apache2/php.ini - PHP-FPM:
/etc/php/*/fpm/php.ini - Windows(WAMP/XAMPP):
C:\wamp64\bin\php\php8.2.0\phpForApache.ini(注意不是根目录下的php.ini) - phpstudy:
D:\phpstudy_pro\Extensions\php\php8.1.0nts\php.ini(路径以实际版本号为准)
改错文件等于白忙——比如 WAMP 用户常误改 php.ini,其实 Apache 用的是 phpForApache.ini。
启用 mysqli 扩展并校验 extension_dir
在确认正确的 php.ini 中做两件事:
- 取消注释:
extension=mysqli(PHP 7.0+ 推荐写法)或extension=php_mysqli.dll(Windows 旧版) - 确保
extension_dir指向真实存在的扩展目录,例如:extension_dir = "D:\phpstudy_pro\Extensions\php\php8.1.0nts\ext"或extension_dir = "/usr/lib/php/20220829" - Linux 下若用包管理器安装(如 Ubuntu),
extension=mysqli行可能根本不存在,需先安装对应包:sudo apt install php8.1-mysqli
别信“只要去掉分号就完事”——如果 extension_dir 错了,PHP 找不到 mysqli.so 或 php_mysqli.dll,照样静默失败。
Windows 下额外要处理 libmysql.dll 和 DLL 依赖
Windows 环境下光启扩展还不够,php_mysqli.dll 依赖 libmysql.dll。常见问题:
-
libmysql.dll不在系统 PATH 中,导致扩展加载失败(错误日志里会出现Unable to load dynamic library 'php_mysqli.dll') - 解决方法:把
php目录下的libmysql.dll复制到C:\Windows\System32(64 位系统也复制到SysWOW64),或直接把php目录加进系统环境变量PATH - 某些老版 php.ini 示例里还写着
extension=php_mysql.dll——这是已废弃的旧扩展,PHP 7.0+ 已移除,删掉或注释掉
改完必须重启对应服务,且验证不能只靠 php -m
修改 php.ini 后不重启服务,改动完全不生效:
- Apache:
sudo systemctl restart apache2或 Windows 下重启 WAMP/XAMPP 控制面板 - PHP-FPM:
sudo systemctl restart php8.1-fpm(版本号按实际调整) - 验证不能只跑
php -m | grep mysqli——这只能说明 CLI 模式加载了;必须访问phpinfo()页面,搜索 “mysqli” 看是否出现模块信息 - 更进一步,写个测试脚本:
<?php var_dump(function_exists('mysqli_connect'));,返回true才算真正可用
最容易被忽略的是:Web 服务用的 PHP 和命令行 PHP 很可能不是同一套二进制、也不是同一份配置,跨环境验证必须分开做。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











