phpEnv的Adminer访问404或空白页,因默认未配置Web路由,需在httpd-vhosts.conf中添加Alias指向adminer.php并重启Apache;“Access denied”多因MySQL未启动、root仅允许127.0.0.1连接或my.ini误配skip-grant-tables;“mysqli not loaded”需在php.ini中启用extension=mysqli;登录后库为空常因连接host/port不匹配或MySQL实例未加载对应数据目录。

phpEnv 的 Adminer 访问 404 或空白页
phpEnv 自带的 Adminer 默认不启用,也不会自动配置 Web 路由 —— 它只是把 adminer.php 文件放在 phpEnv/www/adminer/ 目录下,但没配任何虚拟主机或别名,浏览器直接访问 http://localhost/adminer/ 必然 404。
解决办法是手动在 phpEnv 的 Apache 配置中添加别名(Alias):
- 打开
phpEnv/apache/conf/extra/httpd-vhosts.conf - 在已有
块内加入:<ifmodule alias_module> Alias /adminer "D:/phpEnv/www/adminer/adminer.php" <files> Require all granted </files></ifmodule> - 重启 Apache(用 phpEnv 控制面板点「重启」或命令行执行
httpd -k restart)
注意路径中的盘符和斜杠方向(Windows 下用正斜杠 / 更稳妥),如果 phpEnv 安装在其他目录,需同步修改 Alias 后面的真实路径。
Adminer 报错 “Access denied for user”
这是 MySQL 连接失败最常见提示,不是 Adminer 本身的问题,而是它尝试用当前页面传入的凭据去连 MySQL 时被拒。phpEnv 默认 MySQL root 密码为空,但 Adminer 页面默认填的是 root + 空密码,仍可能失败,原因有三:
- MySQL 服务根本没启动:检查任务管理器里有没有
mysqld.exe,或进phpEnv/mysql/bin/手动运行mysqld --console看报错 - root 用户被限制了 host:phpEnv 默认只允许
'root'@'127.0.0.1',而 Adminer 默认连接 host 是localhost—— 这俩在 MySQL 权限体系里不等价;临时解法是在 Adminer 登录页把 Host 改成127.0.0.1 - MySQL 配置了 strict mode 或跳过了 grant tables:检查
phpEnv/mysql/my.ini里是否误加了skip-grant-tables,有就删掉并重启 MySQL
Adminer 显示 “PHP extension mysqli not loaded”
phpEnv 的 PHP 默认不开启 mysqli 扩展,Adminer 就会直接报这个错,页面都加载不全。必须显式启用:
- 打开
phpEnv/php/php.ini - 找到
;extension=mysqli这一行,删掉前面的分号(;),改成extension=mysqli - 如果还同时用 pdo_mysql,也一并放开:
extension=pdo_mysql - 保存后重启 Apache(仅重启 PHP 不生效,Apache 必须重载模块)
验证方式:访问 http://localhost/phpinfo.php(phpEnv 自带),搜索 mysqli,看到 enabled 才算成功。
Adminer 登录后看不到数据库或表为空
这不是权限问题,而是 Adminer 默认以「当前登录用户」身份列出数据库 —— 如果你用的是 root 但 MySQL 里 root 只有 test 库权限,那别的库自然不显示。更隐蔽的情况是 phpEnv 初始化时创建了多个 MySQL 实例(比如带版本号的 mysql57、mysql80),而 Adminer 连的是空实例。
快速确认方法:
- 在 Adminer 登录页勾选「记住服务器」,然后换不同 host 测试:
127.0.0.1、localhost、mysql(如果启用了 Docker)、甚至127.0.0.1:3307(如果改过端口) - 进 phpEnv 控制面板,看 MySQL 当前运行的是哪个端口(如 3306 还是 3307),确保 Adminer 连的 port 一致
- 用命令行验证:
phpEnv/mysql/bin/mysql -u root -P 3306 -e "SHOW DATABASES;",输出和 Adminer 是否一致
最容易被忽略的是:phpEnv 的 MySQL 服务名、端口、数据目录可能被多次初始化覆盖,旧库文件还在磁盘上,但新服务没加载它们 —— 此时得手动检查 phpEnv/mysql/data/ 下的子目录名是否匹配你期望的数据库名。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











