为什么 Nginx 解析 .php5 文件和 .php 文件不一样?

为什么 Nginx 解析 .php5 文件和 .php 文件不一样?

我已经使用 ISPconfig 安装了 nginx。一切正常,只是我从 apache 服务器移植的一些网站不幸带有.php5扩展,我不知道如何让 nginx 解析它们。我尝试了许多解决方案和变体,但仍然无法使其工作。

我将从文件中粘贴我的设置,如果有人有类似的经验并愿意分享,我将不胜感激。

文件中的部分设置: /etc/php5/fpm/php.ini

cgi.fix_pathinfo=0

/etc/nginx/站点可用/默认

服务器 {
        听 80 默认服务器;
        根目录/usr/share/nginx/html;
        索引 index.html index.php index.htm;
        地点 / {
                尝试文件$uri $uri/ /index.html;
        }
}
位置 ~ \.php$ {
        #fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # # 注意:您应该在 php.ini 中有“cgi.fix_pathinfo = 0;”
        #
        # # 仅使用 php5-cgi:
        #fastcgi_pass 127.0.0.1:9000;
        # # 使用 php5-fpm:
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        #fastcgi_index 索引.php;
        #fastcgi_param脚本文件名$document_root$fastcgi_script_name;
        #包括 fastcgi_params;
                尝试文件$uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index索引.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                包括 fastcgi_params;
        }

特定域的 Vhost 配置文件有错误:

      位置 ~ \.php$ {
            尝试文件/58c4be432bbd2af65343c142b9ec45ec.htm@php;
        }


        位置@php {
            尝试文件$uri =404;
            包括/etc/nginx/fastcgi_params;
            fastcgi_pass 127.0.0.1:9048;
            fastcgi_index索引.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_intercept_errors开启;
        }

        地点 / {
                try_files $uri $uri/ /index.php?q=$uri&$args;
        }

/etc/php5/fpm/pool.d/www.conf已取消评论:

安全.限制扩展名 = .php .php3 .php4 .php5

当有人访问该.php5页面(网站有超过 500 个反向链接)时,浏览器开始下载,例如 php-fpm 没有解析.php5文件:

XX.XXX.X.XXX - - [26/Feb/2014:22:53:07 +0000] "GET /sitemap.php5 HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML,如 Gecko) Chrome/33.0.1750.117 Safari/537.36"
XX.XXX.XX.XXX - - [26/Feb/2014:22:54:27 +0000] “GET /index.php5 HTTP/1.1” 200 71941 “-” “Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0”
XX.XXX.X.XXX - - [26/Feb/2014:22:56:43 +0000] “GET /sitemap.php5 HTTP/1.1” 200 71941 “-” “Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0”

我如何设置 nginx 来解析.php5类似的页面.php

先感谢您。

答案1

如果你将每一行都改为:

      location ~ \.php$ {

看起来像:

      location ~ \.(php|php5)$ {

它应该能满足您的要求。保留 @php 行(@php 是内部块)。当然,该正则表达式可以更短,但不太清楚。

在您的位置 @php 块中传递给套接字而不是本地主机:

      fastcgi_pass unix:/var/run/php5-fpm.sock;

相关内容