phpmyadmin 不能直接 apt install 完事,因其默认依赖 apache 并自动配置,绕过 nginx;需手动取消 web 服务器选择、建软链、配置 nginx alias 与正确 fastcgi_param 才能协同 php-fpm 工作。
phpmyadmin 能直接部署在 ubuntu 22.04 的 lnmp 环境上,但默认的 apt 安装会绕过 nginx,走 apache 或内置 php-cgi,必须手动调整配置才能与现有 nginx + php-fpm 协同工作——否则访问会返回 502、404 或空白页。
为什么不能直接 apt install phpmyadmin 就完事?
Ubuntu 22.04 的 phpmyadmin 包默认依赖 apache2,安装时会自动装 Apache 并写入 /etc/apache2/conf-enabled/phpmyadmin.conf;即使你选了“不配置 Web 服务器”,它仍会把文件解压到 /usr/share/phpmyadmin/,却不生成 Nginx 对应的 location 块或 FastCGI 指令。结果就是:目录存在,但 Nginx 不知道该把 /phpmyadmin 请求交给谁处理。
常见错误现象:
- 访问
http://your-domain.com/phpmyadmin返回404 Not Found(Nginx 根本没路由过去) - 返回
502 Bad Gateway(Nginx 找不到正确的fastcgi_pass地址) - 显示源码或提示
No input file specified.(PHP-FPM 收到请求但没找到脚本路径)
正确部署步骤:解压 + 符号链接 + Nginx 配置
跳过 apt 的 Web 服务绑定逻辑,手动接管:
- 运行
sudo apt install phpmyadmin,安装过程中在“Web server selection”界面用Space取消勾选所有服务器(包括 Apache 和 lighttpd),按Tab切到<ok></ok>回车 —— 这样只解压文件,不改 Web 服务配置 - 确认文件已落盘:
ls -l /usr/share/phpmyadmin/应能看到index.php等文件 - 创建 Web 可访问入口:在你的站点根目录(如
/var/www/html)下建软链:sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin - 确保 PHP-FPM 已运行:
sudo systemctl is-active php8.1-fpm(Ubuntu 22.04 默认是php8.1-fpm,不是php-fpm)
Nginx 配置中必须加的三处关键项
编辑你的站点配置(如 /etc/nginx/sites-available/your-site),在 server 块内添加以下 location 块:
location /phpmyadmin {
alias /usr/share/phpmyadmin;
index index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
}
注意点:
- 必须用
alias(不是root),因为/phpmyadmin是 URL 路径前缀,而真实文件在/usr/share/phpmyadmin,alias才能正确拼出物理路径 -
fastcgi_param SCRIPT_FILENAME $request_filename是关键:默认的fastcgi-php.conf用的是$document_root$fastcgi_script_name,但配合alias时会算错路径,必须显式覆盖 - 检查
fastcgi_pass的 socket 路径是否匹配你的 PHP-FPM 实际监听地址(sudo ss -lnp | grep php可确认)
安全加固和常见坑
部署后务必做两件事,否则可能被扫描器爆破或暴露敏感信息:
- 重命名访问路径:把
/phpmyadmin改成类似/db-admin-2026,只需改 Nginx 中的location名称和软链接名,不碰源文件 - 禁止访问敏感文件:
location ~ ^/phpmyadmin/(config|libraries|setup)/ { deny all; }(放在location /phpmyadmin外部) - 如果启用 HTTPS,确保
cookie_secure和force_https在/usr/share/phpmyadmin/config.inc.php中设为true,否则登录后可能反复跳转 HTTP - 不要把
config.inc.php权限设为 777 ——644足够,且属主应为www-data,否则 PHP 会报“Cannot load mcrypt extension”等误导性错误(实际是权限拒绝读取配置)
最易被忽略的是 SCRIPT_FILENAME 覆盖和软链接目标路径的一致性:一旦改过 alias 目录或移动了 phpMyAdmin 实际位置,这里就必须同步更新,否则 502 就会准时出现。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











