phpMyAdmin 5.2+ 的 PHP 代码高亮由 highlight.js 控制,需通过自定义 CSS 覆盖其默认样式,而非修改 CodeMirror 或 export_php.js;主题切换需清缓存,推荐将 custom-hl.css 通过 $cfg['HeaderExtraCSS'] 注入,并确保选择器为 code.language-php。

phpMyAdmin 5.2+ 的 PHP 代码高亮主题由 highlight.js 控制
phpMyAdmin 自 5.2 版本起,弃用了旧的 codemirror 渲染器,改用 highlight.js 渲染“生成 PHP 代码”弹窗(即 export_php.php 页面)中的代码块。这意味着你不能通过修改 CodeMirror 主题文件来生效,而要替换或重写 highlight.js 的 CSS 主题。
关键路径在:phpmyadmin/js/vendor/highlightjs/ 下的 CSS 文件(如 github.css),以及 phpmyadmin/js/dist/export_php.js 中初始化高亮的逻辑。
-
highlight.js主题 CSS 必须加载到export_php.php页面中(它默认加载github.css) - 主题切换不支持运行时动态换肤——每次修改后需清空浏览器缓存 + phpMyAdmin 的静态资源缓存(如有启用
$cfg['SendErrorReports']或 OPcache) - 不要直接覆盖
js/vendor/highlightjs/下的文件,否则升级 phpMyAdmin 时会被覆盖
安全且可维护的自定义方式:用自定义 CSS 覆盖 highlight.js 样式
最稳妥的做法是不碰 vendor 文件,而是通过 phpMyAdmin 的 config.inc.php 注入自定义 CSS,并用更高优先级规则覆盖 highlight.js 默认样式。前提是你的 phpMyAdmin 启用了 $cfg['AllowArbitraryServer'] = true 或你有服务器配置权限(因为需托管 CSS 文件)。
步骤如下:
- 把自定义主题 CSS(例如从 highlight.js 官方 demo 复制的
atom-one-dark.css内容)保存为/path/to/custom-hl.css(确保 Web 可访问,比如放在phpmyadmin/css/custom-hl.css) - 在
config.inc.php末尾添加:$cfg['HeaderExtraCSS'] = './css/custom-hl.css';
- 在
custom-hl.css中,用更具体的选择器覆盖 PHP 代码块样式,例如:div#sqlquerycontainer pre code.language-php { /* 你的 color / background / font-family */ },注意必须带上code.language-php这个 class(highlight.js自动添加)
为什么改 export_php.js 不推荐?
有人尝试直接修改 js/dist/export_php.js 中 hljs.highlightElement(el) 的调用,传入 { theme: 'xxx' } ——但这是无效的,因为 highlight.js v11+ 已移除 theme 配置项,主题完全由 CSS 控制。
- 修改打包后的
export_php.js极易在下次升级时丢失 - 该 JS 文件是 webpack 打包产物,没有 source map,调试困难
- 即使强行注入新主题 CSS,若未清除浏览器对
export_php.js的缓存,仍可能加载旧逻辑导致样式不生效 - PHP 代码块的
标签 class 是language-php,不是php,选错 class 名会导致覆盖失败
验证是否生效的快速检查点
打开“生成 PHP 代码”弹窗后,在浏览器开发者工具中检查 <code class="php"></code> 元素,确认:
- 自定义 CSS 文件已加载(Network 面板查
custom-hl.css状态码 200) -
code.language-php *的颜色、背景等属性确实被你的 CSS 规则命中(Elements → Styles 面板看哪条规则生效) - 没有出现
Refused to apply style from ... because its MIME type ('text/html') is not a supported stylesheet MIME type错误(说明路径错或 Web 服务器没配对 CSS 的Content-Type) - 如果用了 CDN 引入 highlight.js 主题,确保没和本地
vendor/highlightjs/的 CSS 冲突(建议全站统一用本地 CSS)
最常被忽略的是:phpMyAdmin 的 minify 和 OPcache 会缓存 CSS 输出,改完别只刷新页面,得清 ./tmp/ 目录 + 重启 PHP-FPM 或 Apache。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











