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


phpmyadmin complains about permissions and open_basedir - but they all appear correct

>phpmyadmin已经安装并工作正常数月,通过以下存储库安装:

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
我按照这个 SO 答案并更改了用户和组权限以匹配

示例(用户:root,组:www-data),并更改了目录权限以匹配。

我仔细检查了三

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

我中间做的唯一一件事就是按照本指南安装 freePBX,无论如何,它想要的 90% 都在我的机器上;只安装了像 sqlite 这样的东西,我什至不能确定是它阻止了它的工作。镜头很长,但也许值得一提。

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

事实证明,

这是来自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

我希望这无论如何都能帮助其他人。

这当然是由于您正在使用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 替换为您自己的 web dir。

我希望这有帮助