尽管允许,但在 Nginx 中禁止 phpmyadmin

pnt*_*ere 2 php permissions configuration nginx phpmyadmin

我不明白为什么禁止进入 PHPmyadmin ( http://my_ip/phpmyadmin)。这是我为安装它所做的:

在纯 Ubuntu 16.04 机器(服务器、xenial)上,我安装了带有 php-fpm 7.0 的 LEMP。Nginx conf 是默认的:

apt-get update -y
apt-get upgrade nginx mysql-server php-fpm php-mysql -y
Run Code Online (Sandbox Code Playgroud)

然后我安装了 PMA 并允许它:

DEBIAN_FRONTEND=noninteractive apt-get upgrade phpmyadmin php-mbstring php-mcrypt -y
ln -s /usr/share/phpmyadmin/ /var/www/html/
chown -R www-data:www-data /usr/share/phpmyadmin/ /var/www/html
chmod -R a-x,a=rX,u+w /usr/share/phpmyadmin/ /var/www/html
Run Code Online (Sandbox Code Playgroud)

我真的无法理解错误日志中有什么问题:

“/var/www/html/phpmyadmin/”的目录索引被禁止

什么可能导致 PMA 被禁止?

更新 - 一般:

珍妮的更新:

我删除了符号链接并在http块中添加了这个 confnginx.conf并重新启动了服务器,但没有看到任何变化:

server {    
    location /phpmyadmin {
        index index.php index.html index.htm;
        root /usr/share;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jen*_*y D 5

当您对目录进行符号链接时,您是在告诉 nginx“当您需要使用 时/var/www/html/phpmyadmin,您应该查看/usr/share/phpmyadmin/. 并且该目录不在您的 webroot 目录下,因此 nginx 不会使用它。

不要使用符号链接,而是告诉 nginx 直接开始使用该目录。例子:

location /phpmyadmin {
     index index.php index.html index.htm;
     root /usr/share;
}
Run Code Online (Sandbox Code Playgroud)

这将告诉 nginx 该位置位于/phpmyadmin/usr/share而不是下/var/www/html/

或者,如果/usr//var/文件系统在同一分区上,您可以使用硬链接而不是符号链接。但是,如果您更改分区布局,这可能会给您带来问题。