phpmyadmin 抱怨权限和 open_basedir - 但它们看起来都是正确的

Posted

技术标签:

【中文标题】phpmyadmin 抱怨权限和 open_basedir - 但它们看起来都是正确的【英文标题】:phpmyadmin complains about permissions and open_basedir - but they all appear correct 【发布时间】:2015-01-14 21:06:34 【问题描述】:

phpmyadmin 已经安装好几个月了,通过这个 repo 安装:

deb http://ppa.launchpad.net/tuxpoldo/phpmyadmin/ubuntu utopic main

突然,我无法登录;没有页内错误,但日志显示:

PHP message: phpmyadmin: Failed to load /etc/phpmyadmin/config-db.php Check group www-data has read access and open_basedir restrictions"
PHP message: phpmyadmin: Failed to load /var/lib/phpmyadmin/config.inc.php Check group www-data has read access and open_basedir restrictions"

所以,我检查了:

ll /etc/phpmyadmin

drwxrwxr-x   3 www-data www-data  4096 Nov 16 20:11 ./
drwxr-xr-x 132 root     root     12288 Nov 17 15:33 ../
-rw-r-----   1 www-data www-data   549 Nov 16 20:11 config-db.php

ll /var/lib/phpmyadmin

drwxr-xr-x  4 www-data www-data 4096 Oct  8 15:51 ./
drwxr-xr-x 62 root     root     4096 Nov 12 13:10 ../
-rw-r-----  1 www-data www-data 4478 Nov 16 19:48 config.inc.php

我关注this SO answer并更改了用户和组权限以匹配示例(用户:root,组:www-data)并更改目录权限以匹配。

我检查了两次,三次检查了没有基于开放的限制生效,我检查了 phpinfo() 我尝试将权限更改为 fpm 工作池的权限。 我重新启动了。 我做了一个sudo apt-get install --reinstall phpmyadmin

我在这期间做的唯一一件事就是关注this guide to installing freePBX,无论如何,它想要的 90% 都在我的机器上;只安装了 sqlite 之类的东西,我什至不能确定是它停止了它的工作。远射,但也许值得一提。

其他一切,所有其他网站等,都运行良好。在我失去比过去 5 小时更多的头发之前,我真的很感激一些想法。谢谢!

【问题讨论】:

你看我的回答了吗? 嗨,迈克。是的,我做到了,我在 2016 年对此发表了评论。此外,答案并不真正适用于我的情况,因为我的问题被标记为 nginx,你的答案适用于 Apache,而我已经解决了将近 2 年前在我的回答中。但我确信答案确实对其他使用 Apache 的人有用。谢谢! 【参考方案1】:

原来这是来自 phpmyadmin 的相当误导的消息:

Check group www-data has read access and open_basedir restrictions.

但是任何运行多个站点、使用 php-fpm 并完全关心安全性的人都会为每个站点设置单独的池。

解决方案,在我的特殊情况下是:

chown -R phpma:phpma /var/lib/phpmyadmin
chown -R phpma:phpma /etc/phpmyadmin
chown -R phpma:phpma /usr/share/phpmyadmin

然后sudo dpkg-reconfigure -plow phpmyadmin

顺便说一句,似乎在 Ubuntu 上进行软件包安装会使文件到处都是,它有点像这样:

/etc/phpmyadmin/config.inc.php

按此顺序包含以下文件,除非您想提高登录 cookie 的有效性,否则实际上不需要触摸这些文件。

/var/lib/phpmyadmin/blowfish_secret.inc.php // self explanatory
/var/lib/phpmyadmin/config.inc.php // LoginCookieValidity etc
/etc/phpmyadmin/config-db.php // Leave this one alone
/usr/share/phpmyadmin/config.inc.php // auth, host, connection etc

无论如何,我希望这对其他人有所帮助。

【讨论】:

我通过将相关用户添加到 www-data 组解决了这个类似的问题,而原始权限保持不变。 sudo usermod -a -G www-data phpma【参考方案2】:

这当然是因为您使用的是 mpm_itk_module。

如果是,你必须在你的 apache 设置中使用:

<ifmodule mpm_itk_module>
AssignUserId myuser www-data
</ifmodule>

改为:

<ifmodule mpm_itk_module>
AssignUserId myuser myuser
</ifmodule>

phpmyadmin 需要组 www-data,如果您使用 AssignUserId,则与另一个组一起失败。

您可以在“目录”中添加 apache 配置:

php_admin_value open_basedir "/home/yourpath/htmldir:/etc/phpmyadmin:/var/lib/phpmyadmin"

将 /home/yourpath/htmldir 替换为您自己的网络目录。

希望对你有帮助

【讨论】:

感谢您的信息。只是说最后我放弃了,现在使用adminer。好多了!一个文件,没有麻烦。

以上是关于phpmyadmin 抱怨权限和 open_basedir - 但它们看起来都是正确的的主要内容,如果未能解决你的问题,请参考以下文章

phpMyAdmin 没有权限

phpmyadmin 错误 13 权限被拒绝

无法解析 config.inc.php 的 phpMyAdmin 权限

phpmyadmin, neginx error.log - 检查组 www-data 具有读取权限和 open_basedir

phpMyAdmin“创建数据库:文档无权限”,如何创建数据库?

macOSSierra errno 上的 phpmyadmin 站点:13 - 权限被拒绝