PHP 7.2+ 已移除 mcrypt,phpMyAdmin ≤4.8.x 因硬检查该扩展报错;必须升级至 5.0+ 才能使用 openssl 替代,且需清空 cookie 和 session。
PHP 7.2+ 中 mcrypt 被移除,警告无法通过安装扩展解决
php 7.2 正式废弃 mcrypt,7.3 起彻底删除。你看到的“缺少 mcrypt 扩展”警告,不是因为没装对,而是 phpmyadmin 旧版本(≤ 4.8.x)还在硬检查这个已不存在的模块。强行用 pecl 或第三方源编译 mcrypt 不仅失败率高,还会引入安全风险和兼容性问题——这不是配置问题,是版本断层。
实操建议:
- 确认 PHP 版本:
php -v;若 ≥ 7.2,直接放弃修复mcrypt - 检查 phpMyAdmin 版本:
cat /path/to/phpmyadmin/VERSION或看登录页底部 - ≤ 4.8.x 的 phpMyAdmin 必须升级,没有替代扩展能“模拟”
mcrypt行为
升级 phpMyAdmin 到 5.0+ 后,加密逻辑自动切换到 openssl
从 5.0.0 开始,phpMyAdmin 彻底弃用 mcrypt 相关函数,改用 PHP 原生 openssl_encrypt/openssl_decrypt。该切换不依赖额外配置,只要 OpenSSL 扩展启用(默认几乎都开),密码存储、cookie 加密、临时表名混淆等功能就自动生效。
注意点:
-
openssl在 PHP 中默认启用,无需额外安装;验证命令:php -m | grep openssl - 升级后需清空浏览器 cookie 和服务器 session 文件,否则可能因加密方式不兼容导致登录循环或 403
- 若使用自定义
$cfg['blowfish_secret'],无需修改——新版本仍用它派生密钥,只是底层加解密引擎变了
升级卡在“PHP 版本不满足”?检查实际运行环境而非 CLI 版本
常见错误现象:本地 php -v 显示 8.1,但 phpMyAdmin 报错说“PHP 7.4 required”,或者 Apache/Nginx 下访问仍提示旧版警告。这是因为 Web 服务器调用的 PHP SAPI(如 libphp、php-fpm)可能指向另一个 PHP 安装路径。
排查步骤:
- 在 phpMyAdmin 根目录新建
info.php,内容为<?php phpinfo(); ?>,通过浏览器访问它 - 重点看
Loaded Configuration File和PHP Extension Dir,确认是否与 CLI 输出一致 - 若不一致,修改 Web 服务器配置:Apache 要核对
LoadModule php_module路径;Nginx+php-fpm 需检查fastcgi_pass对应的 socket 或端口是否连对了正确的 php-fpm 实例
仍需支持老版本 phpMyAdmin?临时屏蔽警告不等于修复功能
某些内网环境受限无法升级,只想让警告消失——可以注释掉 libraries/classes/Util.php 中触发警告的代码段,但这只是掩耳盗铃。更关键的是:mcrypt 缺失会导致“导出加密压缩包”、“受保护的表名混淆”等特性彻底失效,且部分操作会静默降级或报错。
真要临时处理(仅限测试环境):
- 定位警告源头:搜索
extension_loaded('mcrypt')或'mcrypt'字符串 - 在
libraries/classes/Util.php的checkExtensions()方法里,把mcrypt相关判断整块注释掉(不要删,方便回滚) - 切勿修改
config.inc.php添加$cfg['McryptDisableWarning'] = true——这个配置项从未被官方支持,是社区误传
真正影响使用的从来不是那行警告文字,而是底层加解密能力缺失后,某些按钮点了没反应、导出文件打不开、甚至登录态维持异常——这些不会报错,但会让你花更长时间排查。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











