phpMyAdmin 4.9+ 主题切换需通过 PMA_theme.setTheme() 动态调用并监听 DOMContentLoaded 和 pma:ajaxSuccess 事件,同时更新 localStorage 与可选的后端 session。
phpMyAdmin 4.9+ 主题切换机制变了,直接改 CSS 不生效
新版 phpmyadmin(4.9 起)已弃用 theme.php 和静态 css 切换逻辑,改用基于 config.inc.php 的 $cfg['thememanager'] 控制,且主题加载走 js 动态注入。硬塞一个悬浮按钮后如果只改 body class 或 link href,页面刷新或 ajax 操作(如打开 sql 窗口、切换数据库)会重置回默认主题。
真正生效的方式是:在每次 DOM 就绪和 pma:ajaxSuccess 事件后,主动调用 phpMyAdmin 内部的 setTheme() 方法,并同步更新 localStorage 与服务端 session 配置(可选)。
- 必须监听
document.addEventListener('pma:ajaxSuccess', ...),否则 AJAX 加载的页面区域(如表结构页)不响应主题切换 - 不能只靠前端 localStorage 记录主题名——phpMyAdmin 后端会读取
$_SESSION['PMA_Theme'],若不写入,登出再登录就丢失偏好 - 主题名必须严格匹配
themes/目录下的子目录名(如pmahomme、bootstrap),大小写敏感
在 footer 中注入悬浮按钮 + 切换脚本(推荐改 ./templates/footer.twig)
phpMyAdmin 4.9+ 使用 Twig 模板,全局修改最稳妥的位置是 ./templates/footer.twig(位于 phpMyAdmin 根目录下)。不要动 js/ 下的原始 JS 文件,否则升级会被覆盖。
在该文件末尾



















