必须升级phpmyadmin至5.2+,因4.9依赖的mysql_connect()等函数在php 8.1中已被彻底移除,调用即触发fatal error,此时error_reporting设置完全无效。
不能修复,必须升级。phpmyadmin 4.9 依赖已从 php 8.1 中彻底移除的 mysql_connect() 等函数,不是警告级别能掩盖的问题。
为什么 error_reporting 设置无效
PHP 8.1 已完全删除 mysql_* 函数族,调用 mysql_connect() 会直接触发 Fatal error: Uncaught Error: Call to undefined function mysql_connect()。此时 error_reporting 和 display_errors 完全不生效——进程在解析阶段就崩溃了,连错误处理逻辑都进不去。
- 你在
config.inc.php开头加error_reporting(0)或改php.ini,只会让白屏更安静,但登录页卡住、数据库列表空白、SQL 执行无响应等现象照旧 - 试图通过
extension=php_mysql.dll(Windows)或extension=mysql.so(Linux)强行加载旧扩展,PHP 8.1 会拒绝启动并报错 -
cat /path/to/phpmyadmin/VERSION显示4.9.x就等于确认不兼容:它没实现mysqli或PDO的完整迁移路径
升级到 phpMyAdmin 5.2+ 是唯一可行路径
5.0 起全面弃用 mysql_*,5.2+ 官方支持 PHP 8.2。别指望“打补丁”或“降级 PHP”,维护成本远高于一次干净升级。
- 下载必须来自 https://www.php.cn/link/a7da12778cb1cfb4b4ae833ea9a0e849,第三方打包版常混入旧版或篡改过的
config.inc.php - 备份原
config.inc.php,重点迁移$cfg['Servers'][$i]['auth_type']和$cfg['blowfish_secret']—— 新版不自动读取旧配置 - 删干净旧目录:
rm -rf /path/to/phpmyadmin,再解压新包;残留的./tmp/或./libraries/vendor/会继续执行老代码 - Apache/Nginx 需确认
mysqli和pdo_mysql已启用:php -m | grep -i mysql应同时输出这两项
升级后仍报 E_DEPRECATED?检查是否真跑在新版本上
常见陷阱是 Web 服务器仍在调用旧 PHP SAPI,导致你以为升级了,实际运行的还是 PHP 7.4 + phpMyAdmin 4.9 的组合。
- 在 phpMyAdmin 根目录建
info.php,内容为<?php phpinfo(); ?>,浏览器访问它 - 看
Loaded Configuration File和PHP Extension Dir,对比php -i | grep "Loaded Configuration"输出是否一致 - Nginx 用户重点查
fastcgi_pass指向的php-fpm实例路径(如127.0.0.1:9000对应哪个 PHP 版本) - Apache 用户检查
LoadModule php_module路径是否指向新版libphp.so,而非残留的旧模块
最易被忽略的一点:升级后必须清空浏览器 cookie 和服务器上的 session 文件。phpMyAdmin 5.2+ 用 openssl 替代 mcrypt 加密 session 数据,旧 session 无法解密,会导致无限重定向或 403 错误——这不是配置问题,是加密上下文不匹配。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











