phpMyAdmin 5.x中$cfg'Servers'不显示的根本原因是配置校验变严格:索引断续、缺分号、漏引号、空值或语法错误会导致整个数组加载中止,后续配置被静默丢弃。
$cfg['servers'][1] 和 $cfg['servers'][2] 这种手动索引写法在 phpmyadmin 5.x 中不是“失效”,而是被严格校验后暴露了原本就存在的隐患:索引断续、空值、语法错误会直接导致后续所有服务器配置被静默丢弃。
phpMyAdmin 4.9 对 $cfg['Servers'] 数组的遍历容错性较高,偶尔跳过个别错误项还能继续加载;5.x(尤其是 5.2+)改用更严格的初始化流程,遇到第一个 Undefined index 或解析失败就中止整个数组加载——你写的 $cfg['Servers'][2] 看似存在,其实根本没进到运行时。
config.inc.php 里 $cfg['Servers'][2] 不显示的根本原因
-
$cfg['Servers'][1]后面漏了分号,导致 PHP 解析器卡在第 2 行,$cfg['Servers'][2]根本没被读取 - 配置块中间混入中文引号、BOM 头或不可见空格,PHP 报
Parse error: syntax error, unexpected,但错误日志可能被关闭,页面只白屏 -
$cfg['Servers'][1]块里用了auth_type = 'config',而$cfg['Servers'][2]没配user和password,phpMyAdmin 5.x 会因字段缺失拒绝加载该条目 - 索引用了
[0]或[1]和[3]跳号,5.x 遍历时发现$cfg['Servers'][2]为空,立刻终止循环
phpMyAdmin 5.x 对多服务器配置的硬性要求
- 所有键名必须加单引号:
'host'、'port'、'auth_type',不能写成host(会被当常量查,查不到就报 Notice 并跳过整条) -
auth_type必须统一设为'cookie';设成'http'或'config'会导致部分服务器凭据失效或登录页不渲染下拉列表 - 每个服务器块必须完整:至少含
'host'(或'socket')、'auth_type'、'verbose',缺一不可 - 不允许在
$cfg['Servers']数组定义中间插入注释、空行或 echo 输出,哪怕一行// test放错位置都可能破坏数组结构
为什么升级到 5.x 后旧配置突然“不工作”
不是语法变了,是校验严了。你在 4.9 里侥幸跑通的配置,比如:
$cfg['Servers'][1]['host'] = 'localhost'; $cfg['Servers'][2]['host'] = '192.168.5.10'; // 这行前面少了个分号? $cfg['Servers'][2]['auth_type'] = 'cookie';
——在 5.x 里,第二行因缺少上一行的分号,PHP 解析失败,整个 $cfg['Servers'] 数组初始化中断,[1] 和 [2] 全部丢失。
真正容易被忽略的是:phpMyAdmin 5.x 不再容忍“差不多能用”的配置,它要求每一项都精确、自洽、无歧义。一个隐藏的 BOM、一处漏掉的引号、一次手抖多打的空格,都会让整个多服务器列表消失。
立即学习“PHP免费学习笔记(深入)”;



















