应升级phpMyAdmin至5.0及以上版本,因旧版硬编码调用已弃用于PHP 7.4、移除于PHP 8.0的get_magic_quotes_gpc()函数;5.2为截至2026年10月最新稳定版。

phpMyAdmin报“Function get_magic_quotes_gpc is deprecated”怎么办
这个警告不是 phpMyAdmin 本身代码写错了,而是它调用了 PHP 7.4 就已标记弃用、PHP 8.0 彻底移除的 get_magic_quotes_gpc()。只要 phpMyAdmin 版本低于 5.0,基本都会触发——因为老版本在初始化时硬编码了对该函数的调用。
解决路径很明确:不改函数,只换版本。你不需要 patch 源码或加兼容层,那反而引入新风险。
- 确认当前 phpMyAdmin 版本:打开 phpMyAdmin 页面底部,看右下角小字;或执行
ls -l /www/server/phpmyadmin/(宝塔)或dpkg -l | grep phpmyadmin(Debian/Ubuntu) - 若版本 ≤ 4.9,必须升级。官方明确:phpMyAdmin 4.9 支持 PHP 8.0,但 4.4 及更早版本不支持;5.0+ 是稳妥选择
- 宝塔用户:直接进「软件商店」→ 找到 phpMyAdmin → 卸载旧版 → 安装「5.2」(截至 2026 年 10 月最新稳定版)
- 手动部署用户:去 phpmyadmin.net 下载
phpMyAdmin-5.2.x-all-languages.zip,解压覆盖原目录,注意保留config.inc.php
为什么升级后还看到“Deprecated: Function …”提示
常见原因是 Web 服务器(如 Nginx)仍把请求转发给了旧 PHP SAPI 或旧 phpMyAdmin 实例。PHP 8.0 的弃用警告默认是 E_DEPRECATED 级别,它不会中断执行,但会出现在错误日志或页面上——前提是 display_errors = On 且 error_reporting 包含该级别。
排查要点:
- 检查实际加载的
php.ini:新建一个info.php,内容为,访问后搜索 “Loaded Configuration File”,确认路径是否对应你修改过的配置 - 确认
error_reporting值:在 phpinfo() 页面搜 “error_reporting”,应显示类似32767(即E_ALL),而不是22527(不含E_DEPRECATED) - 检查是否多 PHP 版本共存干扰:宝塔用户需进「网站」→「设置」→「PHP版本」,确认该站点绑定的是你刚装好 phpMyAdmin 的那个 PHP 8.x 版本,而非残留的 7.2/7.4
- 清空浏览器缓存和 phpMyAdmin 临时目录(如
/www/server/phpmyadmin/tmp/),避免旧 JS/CSS 缓存触发旧逻辑
phpMyAdmin 5.2 还报其他弃用警告?可能是扩展没启全
PHP 8.0 要求部分扩展不仅是存在,还要被正确加载并启用。phpMyAdmin 5.2 依赖 mbstring、xml、json 和 zip,缺一不可。哪怕只少一个,它可能退回到兼容模式,悄悄调用已被移除的兜底函数。
验证方式(命令行执行):
-
php -m | grep -E "(mbstring|xml|json|zip)"—— 四个都得有输出 - 若缺失,编辑对应 PHP 版本的
php.ini(比如/www/server/php/80/etc/php.ini),取消以下行前的分号:extension=mbstring、extension=xml、extension=json、extension=zip - 重启 PHP-FPM:
systemctl restart php-fpm-80(CentOS)或service php8.0-fpm restart(Ubuntu) - 再查 phpinfo(),确认这些模块的状态是 “enabled”
别碰 @ 抑制符或 error_reporting(0) 来屏蔽警告
有人想用错误抑制符绕过弃用提示,但在 PHP 8.0+ 中,@ 对 E_DEPRECATED 已无效;而关掉全部报错只会让后续更严重的 Fatal error 也静默——比如某天 mysqli_connect() 因配置错误失败,你却什么也看不到。
真正要做的,是让警告浮出来,然后靠升级版本根治。弃用警告不是 bug,是迁移路标。你看到它,说明系统正在按预期工作;你忽略它,才真正埋下隐患。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











