phpmyadmin会主动拒绝加载config.inc.php,因其安全机制强制校验权限:只要组或其他用户有写权限(如777、664),即中断加载并报错;必须设为644且属主为web进程用户(如www-data),否则无法读取或触发拦截。
直接把 config.inc.php 权限改成 644 并确保属主是 web 进程用户(如 www-data、www 或 apache),否则 phpmyadmin 会主动拒绝加载——这不是警告,是硬性拦截。
为什么 chmod 777 / 664 会让 phpMyAdmin 直接报错
phpMyAdmin 启动时强制校验 config.inc.php 的权限位:只要“组”或“其他”用户有写权限(即权限数字第二、三位 ≥ 2),就中断加载并抛出 Wrong permissions on configuration file, should not be world writable!。这不是配置错误,是 PHP 层安全策略的阻断行为。
常见误操作:
- 为解决“无法保存设置”,对整个
phpmyadmin/目录执行chmod -R 777,结果触发校验失败 - 用 FTP 工具默认上传设为
664,也被拒绝(因为组可写) - 在宝塔或 XAMPP 中右键设“完全控制”,等同于
777
正确设置权限与属主的实操步骤
仅改权限不够,必须同步确认文件归属。Web 进程(如 nginx、php-fpm)以特定用户身份运行,它必须能读取该文件,且不能拥有写权限。
执行以下命令(路径按实际调整):
cd /usr/share/phpmyadmin sudo chown www-data:www-data config.inc.php # Ubuntu/Debian # 或 sudo chown www:www config.inc.php # 宝塔/CentOS sudo chmod 644 config.inc.php
验证是否生效:
-
ls -l config.inc.php输出应为-rw-r--r-- 1 www-data www-data - 不能是
-rw-------(600),否则 Web 进程读不到,导致白屏或 500 - 重启 Apache/Nginx 或 XAMPP 控制面板中的服务,使变更生效
SELinux 或 open_basedir 导致 644 仍失败
即使权限和属主都正确,CentOS/RHEL 系统上 SELinux 可能拦截读取;PHP 的 open_basedir 若未包含 phpMyAdmin 路径,也会静默拒绝。
排查方法:
- 临时禁用 SELinux 测试:
sudo setenforce 0,刷新页面看报错是否消失 - 永久修复 SELinux 上下文:
sudo restorecon -v /usr/share/phpmyadmin/config.inc.php - 检查
open_basedir:php -i | grep open_basedir,确保输出中包含 phpMyAdmin 所在目录
最常被忽略的是:改完 644 就以为搞定,其实文件属主不对或 SELinux 上下文没更新,权限校验照样过不去——系统级限制不解除,phpMyAdmin 根本不会走到解析配置那一步。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











