phpMyAdmin 打不开主因是 mysqli 扩展未启用,需运行 sudo phpenmod mysqli 并重启 Web 服务;Apache 404 需配置 Alias 和 Directory;mcrypt 报错应升级至 phpMyAdmin 5.0+;Nginx 上传失败需修正 SCRIPT_FILENAME 路径。

phpMyAdmin 安装后打不开,提示 “The mysqli extension is missing”
这是最常见的启动失败原因:PHP 没启用 mysqli 扩展,而 phpMyAdmin 依赖它连接 MySQL。不是没装 MySQL,也不是权限问题,纯粹是 PHP 运行时缺模块。
- 确认 PHP 版本:
php -v,再查扩展是否加载:php -m | grep mysqli—— 如果没输出,说明没启用 - Ubuntu/Debian 系统通常要手动启用:
sudo phpenmod mysqli,然后重启 Web 服务(sudo systemctl restart apache2或sudo systemctl restart php8.1-fpm) - CentOS/RHEL 8+ 使用
dnf install php-mysqlnd(注意不是php-mysql,后者已废弃),安装后确保extension=mysqli出现在/etc/php.d/20-mysqli.ini或类似路径的配置文件里 - 如果用的是 Nginx + PHP-FPM,别忘了检查
php-fpm进程实际加载的配置路径:php-fpm -i | grep "Loaded Configuration File",改错文件位置会导致白忙活
Apache 下访问 /phpmyadmin 返回 404,但文件明明在 /usr/share/phpmyadmin
Apache 默认不自动映射系统全局安装路径,它只认自己配置里的 Alias 或站点根目录下的子路径。把文件拷过去不等于能访问。
- Ubuntu/Debian 安装包会自动启用
phpmyadminApache 配置片段(位于/etc/apache2/conf-enabled/phpmyadmin.conf),但前提是该文件被正确包含 —— 检查主配置中是否有IncludeOptional conf-enabled/*.conf - 手动配置更可靠:在站点配置或
000-default.conf里加一段:<Alias /phpmyadmin "/usr/share/phpmyadmin"> <Directory "/usr/share/phpmyadmin"> Require all granted <FilesMatch "\.(php|html?)$"> SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost" </FilesMatch> </Directory> </Alias> - CentOS 7 的 Apache 默认禁用
.htaccess,而 phpMyAdmin 依赖它做基础路由和安全控制,必须在对应Directory块里显式写AllowOverride All
登录页显示 “Cannot load mcrypt extension”,但系统已禁用 mcrypt
这是旧版 phpMyAdmin(≤ 4.8.x)和新版 PHP(≥ 7.2)的兼容性断层。mcrypt 在 PHP 7.2 中被彻底移除,而老版本 phpMyAdmin 启动时仍硬检查该扩展,直接报错退出。
- 别试图装
libmcrypt或降级 PHP —— 不安全且无效;正确做法是升级 phpMyAdmin 到 5.0+(推荐 5.2.x LTS) - 新版不再依赖 mcrypt,改用
sodium或 OpenSSL 做加密,但要求 PHP ≥ 7.2.5 且开启openssl扩展(默认已开) - 如果只能用旧版(比如某发行版仓库锁死版本),临时绕过方法是在
config.inc.php顶部加一行:if (!extension_loaded('mcrypt')) { function mcrypt_encrypt(){}; function mcrypt_decrypt(){}; }—— 这只是骗过启动检查,不解决根本问题,仅限测试环境
通过 Nginx 访问 phpMyAdmin 时上传 SQL 文件失败,提示 “No input file specified.”
本质是 Nginx 的 fastcgi_param SCRIPT_FILENAME 路径解析错误,导致 PHP 接收到空或错误的脚本路径,进而无法定位上传处理器。
立即学习“PHP免费学习笔记(深入)”;
- 关键检查点:Nginx 配置中
location ~ \.php$块内,fastcgi_param SCRIPT_FILENAME必须用$realpath_root$fastcgi_script_name(而非$document_root$fastcgi_script_name),否则软链接路径会崩 - phpMyAdmin 的导入功能依赖
upload_max_filesize和post_max_size两个 PHP 配置项,它们在php.ini里默认只有 2M,大 SQL 文件必失败 —— 改完记得重启 PHP-FPM - 如果你用的是
alias方式映射 phpMyAdmin(比如alias /pma /usr/share/phpmyadmin;),那么SCRIPT_FILENAME必须显式拼出真实路径:fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name;,不能靠变量推导


















