phpmyadmin 访问被拒绝,Nginx + php5.6

phpmyadmin 访问被拒绝,Nginx + php5.6

我在新服务器 Ubuntu 16.04 上配置了我的新应用程序 php 5.6,使用 Nginx 1.10、php5.6-fpm,

当我尝试配置 phpmyadmin 以使用我的应用程序网址打开它时“http://myapp.com/pm",它说访问被拒绝,在我的 nginx 日志中出现以下错误:

2017/05/31 12:39:37 [error] 30267#30267: *9 FastCGI sent in stderr: "Access to the script '/var/www/html' has been denied (see security.limit_extensions)" while reading response header from upstream, client: xxx.xxx.xxx.xx, server: myapp.com, request: "GET /pm HTTP/1.1", upstream: "fastcgi://unix:/run/php/php5.6-fpm.sock:", host: "myapp.com"

我的虚拟主机配置是:

server {
    listen 80;
    server_name myapp.com;
    index index.php index.html index.htm;
    root /var/www/myapp/;
    access_log /var/log/nginx/myapp_access.log;
    error_log /var/log/nginx/myapp_error.log;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

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


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

phpmyadmin 路径为:

ls -l /var/www/html/
total 4
-rw-r--r-- 1 www-data www-data 612 May 24 17:46 index.nginx-debian.html
lrwxrwxrwx 1 www-data www-data  22 May 25 17:01 pm -> /usr/share/phpmyadmin/

请问有什么帮助吗?

答案1

以下是一些可能的解决方案:

  1. 在 php-fpm www.conf 中将 security.limit_extensions 设置为 .php 或 .php5 或适合您环境的任何值。对于某些用户来说,完全删除所有值或将其设置为 FALSE 是使其正常工作的唯一方法。
  2. 在您的 nginx 配置文件中将 fastcgi_pass 设置为您的套接字地址(例如 unix:/var/run/php-fpm/php-fpm.sock;)而不是您的服务器地址和端口。
  3. 检查您的 SCRIPT_FILENAME fastcgi 参数并根据文件的位置进行设置。在您的 nginx 配置文件中,在定义所有其他 fastcgi 参数的位置块中包含 fastcgi_split_path_info ^(.+.php)(/.+)$;。
  4. 在您的 php.ini 中将 cgi.fix_pathinfo 设置为 1

来源

相关内容