第一件事是确认php环境:phpmyadmin实际加载的php.ini路径需通过info.php中“loaded configuration file”查看,而非cli配置;centos 8必须安装php-mysqlnd(非php-mysql),并重启php-fpm,再用test_mysqli.php验证mysqli_connect是否存在及连接是否成功。

确认当前PHP版本和SAPI类型
phpMyAdmin报“缺少 mysqli 扩展”,第一件事不是改配置,而是确认你面对的是哪个PHP环境。CentOS 8默认用PHP-FPM(不是Apache module),而php -v或php --ini看到的路径是CLI配置,跟Web完全无关。
在Web目录下建个info.php,内容为<?php phpinfo(); ?>,浏览器访问后搜索“Loaded Configuration File”——这才是phpMyAdmin真正读的php.ini路径,通常是/etc/php.d/99-custom.ini或/etc/php-fpm.d/www.conf关联的主配置。
- 常见错误:直接改
/etc/php.ini却没发现FPM实际加载的是/etc/php.d/下的碎片化配置 - 验证命令:
sudo systemctl show --property=Environment php-fpm可查FPM启动时的环境变量,辅助定位配置链
安装mysqlnd驱动而非php-mysql
CentOS 8+已废弃php-mysql包,它只兼容旧版libmysqlclient;PHP 7.4+(含所有PHP 8.x)必须用php-mysqlnd——这是原生MySQL驱动,不依赖外部DLL,也无需libmysql.dll或system32操作。
执行以下命令(注意版本号需匹配你的PHP):
sudo dnf install php-mysqlnd sudo systemctl restart php-fpm
- 别用
php-mysql:该包在CentOS 8中已被移除,强行安装会失败或降级PHP - 别手动下载.so:
mysqlnd是编译进PHP核心的,装包即生效,不需要extension=mysqli显式启用 - 检查是否装对:
rpm -q php-mysqlnd应返回包名,php -m | grep mysql应输出mysqlnd和mysqli
验证mysqli是否真能初始化
php -m | grep mysqli有输出≠phpMyAdmin能用。有些环境扩展注册成功但内部初始化失败(比如mysqlnd找不到SSL库或字符集支持不全),此时phpMyAdmin静默白屏,日志里只有PHP Warning: mysqli_connect(): Couldn't fetch mysqli。
写个最小测试脚本test_mysqli.php:
<?php var_dump(function_exists('mysqli_connect'));
$mysqli = @new mysqli('127.0.0.1', 'root', '', 'mysql', 3306);
var_dump($mysqli->connect_error ?: 'OK');
?>
- 如果
function_exists返回false:说明扩展根本没加载,回退检查php-fpm配置和dnf install结果 - 如果
new mysqli报错:检查MySQL服务是否运行、防火墙是否放行3306、用户密码是否正确——phpMyAdmin的“缺扩展”错误有时是连接失败的伪装 - 关键点:CentOS 8 SELinux默认阻止PHP-FPM连MySQL,临时放行:
sudo setsebool -P httpd_can_network_connect_db 1
phpMyAdmin自身配置不触发mysqli检测
极少情况下,phpMyAdmin会因配置跳过mysqli检查,导致“看似正常实则不可用”。打开/etc/phpMyAdmin/config.inc.php,确认没有以下禁用行为:
- 没有
$cfg['Servers'][$i]['extension'] = 'pdo';硬指定PDO——这会让phpMyAdmin绕过mysqli检测,但后续操作仍可能崩溃 - 没有注释掉
$cfg['Servers'][$i]['auth_type']等关键项,导致初始化流程中断 - 检查
$cfg['Servers'][$i]['host']是否误写为localhost(在CentOS 8上可能走socket而非TCP,需确保mysqli.default_socket指向/var/lib/mysql/mysql.sock)
最稳妥做法:删掉自定义config.inc.php,用cp /usr/share/phpMyAdmin/config.sample.inc.php /etc/phpMyAdmin/config.inc.php重置,再逐步加配置。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











