phpmyadmin 5.2.0+ 支持自定义 codemirror 主题,需启用 $cfg['codemirrorenable'] = true,将 theme-xxx.css 放入 ./themes/original/css/codemirror/,并在 config.inc.php 中设置 $cfg['codemirrortheme'] = 'xxx',同时清除缓存与检查权限。
phpmyadmin 默认只提供有限的几个代码主题(比如 default、light、dark),但它的 sql 编辑器底层用的是 codemirror,而 codemirror 本身支持几十种主题 —— 只要你手动启用,就能直接用。
确认 phpMyAdmin 版本是否支持自定义 CodeMirror 主题
5.2.0+ 版本开始,phpMyAdmin 允许通过配置文件注入额外的 CodeMirror 主题 CSS 文件;低于该版本(如 5.1.x)即使替换 CSS 也大概率无效,因为主题加载逻辑硬编码在 JS 中,无法扩展。
- 运行
SELECT VERSION();或查看登录页底部小字确认版本 - 检查
config.inc.php是否存在$cfg['CodemirrorEnable'] = true;(必须开启,否则所有 CodeMirror 相关配置都被忽略) - 主题 CSS 必须放在
./themes/original/css/codemirror/目录下,且文件名形如theme-xxx.css
添加一个新 CodeMirror 主题(例如 dracula)
CodeMirror 官方主题库(https://codemirror.net/5/theme/)中,dracula.css 是兼容性好、对比度高的选择。它不依赖 JS,纯 CSS 实现,适合 phpMyAdmin 场景。
- 下载
dracula.css,重命名为theme-dracula.css - 放入
phpmyadmin/themes/original/css/codemirror/(路径不存在需手动创建) - 在
config.inc.php中追加:$cfg['CodemirrorTheme'] = 'dracula';
- 注意:值是
dracula,不是theme-dracula或dracula.css—— phpMyAdmin 会自动拼接前缀和后缀
为什么改了配置没生效?常见失效原因
最常踩的坑不是主题没加对,而是被缓存或权限卡住。
- 浏览器强制刷新(
Ctrl+Shift+R),禁用所有插件(尤其 Dark Reader 会覆盖 CodeMirror 的 dark 主题) - PHP OPcache 或 APCu 缓存了
config.inc.php,执行sudo systemctl restart php*-fpm清除 -
theme-dracula.css文件权限为644,且 Web 服务器用户(如www-data)可读 - 如果启用了
$cfg['TempDir'],确保其目录可写,否则 phpMyAdmin 可能无法动态合并 CSS 资源
主题切换后 SQL 高亮异常或错位
部分 CodeMirror 主题(如 mdn-like、neo)过度定制 token 样式,会与 phpMyAdmin 自带的 SQL 模式(sql.js)冲突,导致关键字识别失败或行号偏移。
- 优先选用官方推荐主题:
default、material、dracula、neat - 避免使用含
font-feature-settings或自定义@font-face的主题,phpMyAdmin 的编辑器容器无字体上下文 - 若发现高亮丢失,打开浏览器开发者工具 → Elements → 找到
.CodeMirror元素,检查是否加载了对应theme-xxx.css,以及是否有 CSS 规则被!important覆盖
真正起作用的从来不是主题数量,而是 CodeMirror 主题与 phpMyAdmin SQL mode 的匹配程度 —— 多数人装完就以为成了,其实漏掉了 CodemirrorEnable 这个开关,或者把 CSS 放错了层级。主题文件放对位置、配置名写对、缓存清干净,三者缺一不可。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











