Ubuntu20.04.6下Plesk环境中PhpMyAdmin报400错误的原因排查
核心错误关联分析
从日志来看,auth.log里的user denied: (empty-denied)是关键线索——这是phpMyAdmin认证模块返回的错误,说明请求未携带有效认证信息,直接触发了400 Bad Request。虽然请求URL里带了token参数,但该token可能已失效、无效,或者会话上下文丢失。
具体排查步骤
检查phpMyAdmin会话有效期配置
编辑/usr/local/psa/admin/conf/phpMyAdmin/config.inc.php,查看$cfg['LoginCookieValidity']值(默认1440秒,即24分钟)。如果员工操作时长超过这个阈值,闲置页面的token会过期,发起请求时就会触发错误。可尝试调大该值,例如:$cfg['LoginCookieValidity'] = 3600; // 1小时验证PHP Session配置匹配度
查看PHP 8.0的php.ini(路径一般为/etc/php/8.0/apache2/php.ini或/etc/php/8.0/fpm/php.ini),确保session.gc_maxlifetime的值不小于LoginCookieValidity,避免会话被垃圾回收机制提前清理。同时检查session存储目录(默认/var/lib/php/sessions)的权限,确保PHP进程(通常是www-data用户)有读写权限。排查Plesk会话隔离设置
登录Plesk面板,进入「工具与设置」→「应用程序」→「phpMyAdmin」,确认「为每个用户单独保存phpMyAdmin会话」是否开启。若开启,检查对应会话存储目录(一般在/var/lib/phpMyAdmin/sessions/下的用户子目录)的权限是否正常。排查浏览器端异常
让出现问题的员工尝试以下操作:- 清除浏览器缓存与本地存储,重新登录phpMyAdmin
- 用隐私/无痕模式访问,排除插件干扰(如广告拦截、隐私保护插件可能拦截会话或token参数)
- 检查浏览器开发者工具的「网络」面板,对比错误请求与正常请求的
token参数格式,看是否存在截断、编码错误
开启phpMyAdmin详细日志
在config.inc.php中添加以下配置,开启系统日志记录:$cfg['Log'] = 'syslog';之后查看
/var/log/syslog中的phpMyAdmin相关条目,获取更详细的认证失败细节。
临时缓解方案
当员工遇到400错误时,刷新phpMyAdmin页面重新获取有效token,即可恢复操作。
内容的提问来源于stack exchange,提问作者Pa0x43

