phpMyAdmin 5.2+ 深色主题需三步:1. 启用 CodeMirror($cfg['CodemirrorEnable'] = true);2. 将 theme-xxx.css 放入 ./themes/original/css/codemirror/ 并配置 $cfg['CodemirrorTheme'] = 'xxx';3. 清除 ./js/dist/ 和浏览器缓存,必要时手动增强 SQL token 样式。
phpMyAdmin 5.2+ 必须显式启用 CodeMirror 才能用深色主题
默认情况下,phpmyadmin 的 sql 编辑器(基于 codemirror)是关闭的,即使你看到编辑框,底层也可能是原生 <textarea>,不支持任何主题切换。必须先开启 codemirror 引擎,否则改 $cfg['codemirrortheme'] 完全无效。
确认并启用方式:
- 编辑
config.inc.php,确保存在且为 true:$cfg['CodemirrorEnable'] = true; - 该配置需放在
$cfg['Servers'][$i]['auth_type']之后,且不能被注释掉 - 重启 Web 服务(如 Apache)后,打开任意 SQL 页面,右键编辑器 → “检查元素”,若外层有
div.cm-editor,说明已生效;否则仍为纯文本框
CodeMirror 深色主题文件必须放对路径且命名匹配
phpMyAdmin 不会自动加载任意 CSS 文件,它只认 ./themes/original/css/codemirror/ 下的 theme-xxx.css,且文件名中的 xxx 必须与配置值完全一致(大小写敏感、无空格、无扩展名)。
常见错误和操作:
- 下载官方 CodeMirror 主题(如
dracula.css或one-dark.css),重命名为theme-dracula.css,放入./themes/original/css/codemirror/ - 在
config.inc.php中设置:$cfg['CodemirrorTheme'] = 'dracula';(不是dracula.css,也不是theme-dracula) - 路径必须是
original主题下的codemirror/子目录 —— 即使你用了自定义主题(如mytheme),CodeMirror 主题仍只从original目录加载 - 如果文件放错位置(比如丢进
mytheme/css/或根目录css/),编辑器会静默回退到默认浅色,控制台也无报错
浏览器缓存和压缩 CSS 文件常导致主题不更新
改完配置和文件后页面仍显示浅色,大概率不是配置错,而是静态资源没刷新。phpMyAdmin 5.2+ 默认启用 CSS 压缩合并,生成的 ./js/dist/theme.min.css 会缓存所有样式,包括 CodeMirror 主题引入规则。
立即学习“PHP免费学习笔记(深入)”;
强制刷新步骤:
- 删除整个
./js/dist/目录(不要只删theme.min.css,其他文件可能依赖) - 清空浏览器缓存(Ctrl+F5 不够,建议用隐身窗口访问)
- 检查浏览器开发者工具 Network 标签页,过滤
codemirror,确认加载的是你刚放的theme-dracula.css,而非 404 或旧版本 - XAMPP 用户还需注意:部分版本启用了 Twig 缓存,删掉
./tmp/下所有文件
深色主题下 SQL 关键字或背景太暗?别调全局,只改 CodeMirror token
很多第三方 CodeMirror 主题(尤其是移植自 VS Code 的)对 PHP/SQL 支持不完整,SELECT、FROM 等关键字可能渲染成极淡灰色,在深色背景上几乎不可读。这不是 phpMyAdmin 问题,而是主题本身缺失语言 token 定义。
安全修复方式(不改主题源码):
- 在
./themes/original/css/codemirror/theme-dracula.css底部追加:
/* 修正 SQL 关键字颜色 */
.cm-s-dracula .cm-keyword { color: #ff79c6 !important; }
.cm-s-dracula .cm-def { color: #50fa7b !important; }
.cm-s-dracula .cm-string { color: #f1fa8c !important; }
.cm-s-dracula .cm-error { background-color: #ff555520 !important; }注意:cm-s-dracula 是 CodeMirror 主题 class 前缀,必须与你启用的主题名一致(如用 one-dark,就换成 cm-s-one-dark)。直接加 !important 是唯一可靠方式,因为 CodeMirror 内联样式优先级极高。
真正容易被忽略的点:CodeMirror 主题生效 ≠ 整个 phpMyAdmin 界面变暗。SQL 编辑器深色了,但顶部菜单、表格行、按钮仍是原主题色 —— 这是正常行为。要统一 UI 深色,得另配 body.darkmode 规则,和 CodeMirror 无关。



















