You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

配置Google reCAPTCHA导致phpMyAdmin登录后无法进入控制面板

解决phpMyAdmin启用Google reCAPTCHA后登录卡住的问题

我之前也踩过一模一样的坑,折腾了好一阵子才找到根源,给你梳理几个亲测有效的排查和解决方向:

1. 先临时恢复访问,排查reCAPTCHA核心配置

既然你目前还有唯一能访问phpMyAdmin的方式,先利用这个方式进入后台或者直接修改配置文件,先确认基础配置没出错:

  • 打开config.inc.php,检查$cfg['CaptchaPublicKey']$cfg['CaptchaPrivateKey']是否完全和Google后台生成的一致,别小看复制时的空格、大小写错误,这是最常见的坑。另外要确保密钥是对应当前phpMyAdmin域名的,跨域名密钥会直接验证失败。
  • 测试服务器能否连通reCAPTCHA服务:在服务器终端执行curl https://www.recaptcha.net/recaptcha/api/siteverify,如果返回正常的JSON结构(哪怕是验证失败的提示),说明网络没问题;如果连不通,那大概率是服务器防火墙、DNS或者代理阻断了请求,得先解决网络连通性。

2. 排查版本兼容性问题

reCAPTCHA和phpMyAdmin的版本适配很重要:

  • 如果你用的是phpMyAdmin 5.0.x及更早的版本,建议升级到最新稳定版,旧版本对reCAPTCHA v3的支持有已知bug,尤其是和PHP 7.4+版本搭配时容易出现验证卡住的情况。
  • 试试切换reCAPTCHA版本:如果你当前用的是v3(静默验证),改成v2的复选框模式,有些服务器环境下v3的行为分析会因为网络延迟或者环境限制导致验证超时,页面卡住。

3. 排除浏览器端干扰

有时候问题出在前端而非服务器:

  • 清除浏览器的缓存和phpMyAdmin相关的Cookie,旧的会话数据可能和新的reCAPTCHA验证流程冲突。
  • 用无痕模式或者其他浏览器测试,排除广告拦截、隐私类插件屏蔽reCAPTCHA脚本的情况——很多这类插件会默认阻止Google的reCAPTCHA资源加载,导致验证流程无法完成。

4. 手动调试验证流程(进阶)

如果上面的方法都没用,咱们直接看reCAPTCHA的验证返回结果:
找到phpMyAdmin的登录处理文件(一般是libraries/Login.class.php),定位到reCAPTCHA验证的代码段,添加日志输出:

// 在验证请求后添加日志
$response = file_get_contents('https://www.recaptcha.net/recaptcha/api/siteverify?secret=' . urlencode($cfg['CaptchaPrivateKey']) . '&response=' . urlencode($_POST['g-recaptcha-response']));
// 把日志写到临时文件,方便查看
error_log('reCAPTCHA Debug Response: ' . $response, 3, '/tmp/recaptcha_debug.log');

然后尝试登录,打开/tmp/recaptcha_debug.log,Google会在返回的JSON里明确告诉你验证失败的原因,比如"error-codes": ["invalid-input-secret"]就说明密钥错了,照着提示修正就行。

如果实在急着用phpMyAdmin,先临时禁用reCAPTCHA:在config.inc.php里把$cfg['CaptchaLogin']设为false,先恢复正常访问,再慢慢排查问题。

内容的提问来源于stack exchange,提问作者Kristi

火山引擎 最新活动