【问题标题】:Ubuntu 14 - Nginx - PHP5-fpm : installed phpmyadmin but 403 forbidden accessUbuntu 14 - Nginx - PHP5-fpm:安装了 phpmyadmin 但 403 禁止访问
【发布时间】:2014-12-28 13:07:35
【问题描述】:

Nginx 和 PHP5-FPM 已经安装好,运行良好...

# 我可以同时访问http://www.example.comhttp://www.example.com/info.php

$ ls -la /var/www/html
 -rw-r--r-- 1 root root  868 Nov  1 08:16 index.html
 -rw-r--r-- 1 root root   21 Nov  1 08:13 info.php

我安装了 phpmyadmin 并创建了指向 phpmyadmin 文件的符号链接

 lrwxrwxrwx 1 root root   21 Nov  1 08:37 phpmyadmin -> /usr/share/phpmyadmin

但试图得到 http://www.example.com/phpmyadmin => 我得到了 403 Forbidden

使用符号链接,我不应该将任何与 phpmyadmin 相关的内容添加到我的 nginx.conf 中......可能缺少什么?

更新 1:将 index.php 添加到 uri 会带来登录面板

 http://www.example.com/phpmyadmin/index.php

我应该在我的默认 con 文件中添加什么来直接获取它...我猜我的 try 文件无效.. 这是我的默认 nginx 站点配置文件

    server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www/html;
        index index.php, index.html index.htm;

        server_name example.com;

        location / {
            try_files $uri $uri/ index.html index.php  =404;
        }

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root /var/www/html;
        }

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }
    }

【问题讨论】:

    标签: nginx phpmyadmin ubuntu-14.04


    【解决方案1】:

    您可以尝试以下几件事。一种是disable_symlinks 指令:

    location /phpmyadmin {
        disable_symlinks off;
    }
    

    另一种选择是使用别名而不是符号链接:

    location /phpmyadmin {
        alias /usr/share/phpmyadmin;
    }
    

    【讨论】:

    • 感谢您的提示,我试过了,bt 总是在日志中得到相同的错误:“/var/www/html/phpmyadmin/”的目录索引被禁止,...
    • 你的服务器块中有index index.php吗?
    • 如果我请求example.com/phpmyadmin/index.php 那么我得到登录面板...我有root /var/www/html;索引 index.php、index.html 索引.htm;在我的服务器块中...
    • 你在使用try_files吗?您可以尝试将 index.php 附加到它。
    • 我有一个 try_files ,但在 / 位置...我没有任何用于 /phpmyadmin 位置的东西...只是一个符号链接,我是否需要在我的 nginx con 文件中添加任何内容?谢谢
    【解决方案2】:

    添加以下位置后运行良好:

         location /phpmyadmin {
           index index.php;
        }
    

    【讨论】:

      【解决方案3】:

      我已添加:

      location /pma/ {
          alias /usr/share/phpmyadmin/;
      
          index index.html index.htm index.php;
      
          location ~ ^/pma(.+\.php)$ {
              alias /usr/share/phpmyadmin$1;
              fastcgi_pass unix:/var/run/php5-fpm.sock; #OR fastcgi_pass 127.0.0.1:9000;
              fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$1;
              include fastcgi_params;
              fastcgi_intercept_errors        on;
          }
      }
      

      这样当用户访问目录/pma/ 时,他们会被定向到/usr/share/phpmyadmin,这也是一个稍微“安全”的选项!和以前一样,我也遇到了 403 错误!

      403 错误的主要修复实际上是实现该行:

      index index.html index.htm index.php;
      

      【讨论】:

      • 而不是“location /pma/”更改为“location /pma”,因此不需要“/”。它只是让你在浏览器中输入 url 时感到困惑......谢谢..
      • 这对我有用,但只有在清除浏览器缓存之后
      【解决方案4】:

      去掉逗号就没事了

          index index.php, index.html index.htm;
      

      【讨论】:

        【解决方案5】:

        这是我对这个问题的解决方案:

        第 1 步:您应该 SSH 并运行命令

        sudo nano /etc/nginx/sites-available/default
        

        第 2 步:查找块代码

        server {
          ....
        }
        

        然后在服务器块的“}”之前插入

            location /phpmyadmin {
                    index index.php;
            }
        

        看起来像这样

        server{
               ...(your default)...
               location /phpmyadmin {
                        index index.php;
               }
        }
        

        希望这是你的!

        【讨论】:

          【解决方案6】:

          到 nginx.conf 文件或默认(../sites-available/default)

          location /phpmyadmin {
                 root /usr/share/;
                 index index.php index.html index.htm;
                 location ~ ^/phpmyadmin/(.+\.php)$ {
                         try_files $uri =404;
                         root /usr/share/;
                         fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                         fastcgi_index index.php;
                         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                         include /etc/nginx/fastcgi_params;
                 }
                 location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                         root /usr/share/;
                 }
          }
          

          【讨论】: