CentOS 8 中 phpMyAdmin 不在默认仓库,需先启用 EPEL 源(dnf install epel-release),再安装 phpmyadmin,并配置 Apache 权限与 SELinux 策略,因其非模块流组件,dnf module 命令无效。
dnf install phpmyadmin 报错“没有匹配的模块流”
centos 8 默认仓库里根本没有 phpmyadmin 这个包——它不在 appstream 模块流中,也不在 baseos 里。你执行 dnf install phpmyadmin 时看到的“没有可用的模块流”或“no match for argument”,本质是包根本不存在,不是配置没开。
- AppStream 模块流只包含
php、nginx、mysql等基础运行时,phpmyadmin是 Web 应用,不属于模块化组件 - 官方 EPEL 仓库(Extra Packages for Enterprise Linux)才提供
phpmyadmin,但 EPEL 在 CentOS 8 中默认未启用 - 直接
dnf module list phpmyadmin会返回空,因为压根没这个模块
启用 EPEL 并安装 phpMyAdmin 的正确步骤
必须先加 EPEL 源,再装包。CentOS 8 的 EPEL 包名是 epel-release,不是 epel-release-latest-8.noarch.rpm(后者是旧方式,容易装错架构或版本)。
- 运行
dnf install epel-release—— 这会自动配置好/etc/yum.repos.d/epel.repo - 确认源已启用:
dnf repolist | grep epel应该输出epel和epel-modular - 然后执行
dnf install phpmyadmin,它会自动拉取依赖(包括httpd、php-mbstring等) - 注意:安装后配置文件在
/etc/phpMyAdmin/,Web 路径默认是/usr/share/phpMyAdmin/
安装后打不开页面,提示 403 或 “Forbidden”
这是最常卡住的地方:CentOS 8 的 httpd 默认禁止访问 /usr/share 下的目录,而 phpmyadmin 包没自动配好 Apache 的 alias 和权限规则。
- 检查
/etc/httpd/conf.d/phpMyAdmin.conf是否存在——EPEL 安装后应该有,但内容可能被 SELinux 或新版 httpd 限制 - 关键修改:在配置里找到
<Directory /usr/share/phpMyAdmin>块,确保里面有Require all granted(不是 old-style 的Allow from all) - SELinux 默认阻止 httpd 访问该路径,临时验证可运行
setsebool -P httpd_can_network_connect_db 1和setsebool -P httpd_read_user_content 1 - 重启服务:
systemctl restart httpd,别忘了开防火墙端口:firewall-cmd --permanent --add-service=http+firewall-cmd --reload
为什么不用 dnf module enable phpmyadmin?
因为 phpmyadmin 根本不是模块流(module stream)——它没有 stream、profile、version 这些概念。你查 dnf module list | grep phpmyadmin 什么都不会出来。
-
dnf module只管像php:7.2、nodejs:12这类有多个主版本共存需求的运行时 -
phpmyadmin是单一版本 Web 应用,走传统 RPM 包管理,和vim-enhanced、git同类 - 试图
dnf module enable phpmyadmin会报错 “No matching Modules to enable”,这不是操作顺序问题,是对象类型错误
真正要盯住的是 EPEL 源是否生效、Apache 配置是否放行、SELinux 是否拦截——这三个点漏一个,页面就出不来。模块流那套逻辑在这里完全不适用。
立即学习“PHP免费学习笔记(深入)”;



















