OpenWrt 上直接安装 phpMyAdmin 几乎不可行,因其依赖完整 PHP 环境(含 mbstring、mysqli 等扩展)及 Apache 风格重写规则,而 OpenWrt 默认仅提供最小 PHP 包且 uhttpd 不支持 .htaccess;需改用 lighttpd + 手动配置 PHP FastCGI 并精简 phpMyAdmin 功能以适配资源受限环境。
为什么 OpenWrt 上直接装 phpMyAdmin 几乎不可行
phpmyadmin 依赖完整 php 运行环境(含 mbstring、json、mysqli 或 pdo_mysql 扩展),而 openwrt 的 php7 或 php8 包默认只含最小核心,扩展需单独安装且常缺失或编译不兼容。更关键的是:openwrt 默认用 uhttpd,不支持 .htaccess,而 phpmyadmin 依赖重写规则处理路由(如 /index.php?route=/ → /),硬塞进去会大量 404 或跳转失败。
替代方案:用 lighttpd + 定制 PHP 配置启动最小可用实例
这不是“安装 phpMyAdmin”,而是手动拉起一个能跑它的轻量 HTTP+PHP 环境。你得放弃一键包思路,接受手动配置:
- 先装
lighttpd(比uhttpd更易配 PHP FastCGI):opkg install lighttpd lighttpd-mod-cgi lighttpd-mod-fastcgi - 装 PHP 及必需扩展:
opkg install php7 php7-mod-mysqli php7-mod-pdo php7-mod-pdo-mysql php7-mod-json php7-mod-mbstring(注意:OpenWrt 22.03+ 用php8,对应包名换为php8-*) - 解压 phpMyAdmin 到
/www/phpmyadmin/,确保config.inc.php中$cfg['Servers'][$i]['auth_type'] = 'cookie';(避免 LDAP/HTTP 认证依赖) - 在
/etc/lighttpd/lighttpd.conf末尾加 FastCGI 规则:fastcgi.server = ( ".php" => ( "localhost" => ( "socket" => "/var/run/php-fpm.sock", "bin-path" => "/usr/bin/php-cgi" ) ) )
(注意:OpenWrt 无php-fpm,改用php-cgi;路径需确认存在)
常见报错和绕过方式
部署后访问首页白屏或提示“Missing extensions”?大概率是扩展没加载或权限不对:
-
Call to undefined function mb_strlen()→ 检查php7-mod-mbstring是否已装,且/etc/php7/php.ini中有extension=mbstring.so -
mysqli extension is missing→ 确认php7-mod-mysqli已装,并在php.ini启用extension=mysqli.so(不是mysql.so,后者已废弃) - 登录后空白页或报
Cannot start session without errors→/tmp可写但session.save_path默认指向/var/lib/php/sessions(不存在),在php.ini改成session.save_path = "/tmp" - 点任何链接都跳回登录页 →
config.inc.php中$cfg['blowfish_secret']必须设为 32 字符随机字符串,不能为空或注释掉
性能与安全底线必须手动补上
OpenWrt 路由器 RAM 小、CPU 弱,phpMyAdmin 全量加载会卡死。别信“开个 Web 管理 MySQL 就行”的直觉:
- 禁用所有非必要功能:在
config.inc.php加$cfg['Servers'][$i]['DisableIS'] = true;(跳过信息模式库扫描)、$cfg['ShowChgPassword'] = false; - MySQL 用户必须限定 host:不要用
'root'@'%',改用'root'@'127.0.0.1'并确保 MySQL 绑定127.0.0.1(而非0.0.0.0) - lighttpd 仅监听本地:
server.bind = "127.0.0.1",否则外网可直连 phpMyAdmin(OpenWrt 默认无防火墙放行 80) - 别把 phpMyAdmin 放在
/www/根目录下——哪怕只是临时用,也至少挪到/www/dbadmin/并删掉setup/目录
真要日常用,不如直接 ssh 进去用 mysql 命令行;phpMyAdmin 在 OpenWrt 上就是个临时救急工具,多点两下就可能让路由器变砖。


















