phpMyAdmin白屏主因是mysqli扩展未加载:Windows需取消php.ini中;extension=mysqli注释,Linux需安装php-mysqli包,Docker须手动安装;务必确认Web SAPI实际加载的php.ini路径并重启服务,再通过phpinfo()和测试脚本验证扩展可用性。
phpMyAdmin白屏是因为mysqli扩展根本没加载
不是配置错、不是权限问题、也不是文件损坏——绝大多数情况就是 php 根本没启用 mysqli 扩展。phpmyadmin 启动时检测不到这个扩展,直接退出不报错,页面就空着。你可以用 php -m | grep mysqli 在命令行确认:如果没输出,说明扩展压根不在加载列表里。
- Windows 用户常见于
php.ini里;extension=mysqli这行还带着分号,没取消注释 - Linux(如 Ubuntu)用户常误以为装了
php-mysql包就行,其实得装php-mysqlnd或对应 PHP 版本的php-mysqli(例如php8.1-mysqli) - 用 Docker 的人容易忽略:基础镜像(比如
php:apache)默认不带mysqli,必须手动docker-php-ext-install mysqli
确认 PHP 实际加载的 php.ini 路径
改错配置文件是白忙一场。PHP CLI 和 Web SAPI(比如 Apache 或 FPM)可能用完全不同的 php.ini。直接访问 phpinfo() 页面最可靠——在 Web 目录下建个 info.php,内容只写 <?php phpinfo(); ?>,浏览器打开后搜索 “Loaded Configuration File”,看显示的是哪个路径。
- Apache 下通常在
/etc/php/*/apache2/php.ini - FPM 下通常是
/etc/php/*/fpm/php.ini - 别信
php --ini输出的路径,它只反映 CLI 模式 - 改完
php.ini后,必须重启对应服务:sudo systemctl restart apache2或sudo systemctl restart php*-fpm
mysqli 加载失败的典型错误日志在哪
白屏没提示,但错误其实记在日志里。PHP 不会把扩展加载失败抛给浏览器,而是写进错误日志。关键不是看 phpMyAdmin 日志,而是看 PHP 自己的日志。
- 查
php.ini里的error_log配置项,比如/var/log/php_errors.log - Apache 用户也得看
ErrorLog指向的文件(如/var/log/apache2/error.log),里面常有类似PHP Warning: mysqli_connect(): Couldn't fetch mysqli in ...或更底层的Unable to load dynamic library 'mysqli' - 如果日志为空,先确认
log_errors = On且error_reporting = E_ALL在生效的php.ini中已设置
验证 mysqli 是否真可用,别只信 php -m
php -m 显示 mysqli 只代表模块注册了,不代表能连数据库。phpMyAdmin 启动时会尝试调用 mysqli_report(MYSQLI_REPORT_OFF) 等函数,如果扩展内部初始化失败(比如依赖的 mysqlnd 库缺失),仍会静默崩溃。
- 写个最小测试脚本:
<?php if (!extension_loaded('mysqli')) { die('mysqli not loaded'); } $test = mysqli_init(); if (!$test) { die('mysqli_init failed'); } echo "mysqli is working"; ?> - 用这个脚本代替 phpMyAdmin 访问,能过才说明扩展真正就绪
- 某些旧版 PHP(如 7.4 以前)在启用
opcache时,若mysqli加载顺序不对,也会导致初始化失败——这时把extension=mysqli行挪到opcache配置之前往往能解决
真正卡住人的,往往是 PHP 多版本共存时改了 A 版本的 php.ini,但 Web 服务跑的是 B 版本;或者 Docker 容器里 php -v 和 phpinfo() 显示的版本不一致。这些细节不盯住路径和进程,修十次也白搭。
立即学习“PHP免费学习笔记(深入)”;



















