nginx将html后缀文件作为php解析

admin2022-12-29  185

神雕大神的hinas系统默认的主页是html的文件,但是html文件里面又有php的代码,在HiNAS系统里面运行正常,我将这些html的文件复制下来,放进CentOS服务器里面就无法运行,只能将html代码的文件后缀更改为php才能正常解析。

 

刚开始还不明白为什么在HiNAS系统里面正常,在CentOS里面怎么就不正常了。

 

查了资料才知道,通过修改服务器的配置文件,可以让html的文件也做为php文件进行解析。

 

不过,我的CentOS是通过宝塔面板安装的LNMP的运行环境,和直接安装nginx+php的修改方式略有不同。主要是修改的配置文件路径稍微有点不一样。

 

先查看php-fpm.conf文件中的内容,并且修改配置文件中的security.limit_extensions,改成如下内容:

security.limit_extensions = .php .html

 

但是宝塔面板的php-fpm.conf文件中没有security.limit_extensions,直接在文件内容中[www]段的末尾添加进去就行。

 

然后就是查看php-fpm.conf文件中listen的内容,如果php-fpm.conf文件中listen的内容不为端口,是类似于*.sock这样的,则nginx.conf中server段的内容为:

location ~ \.php|\.html(.*)$
        {
        fastcgi_pass unix:/tmp/php-cgi-74.sock;
        fastcgi_index index.php;
        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        include fastcgi_params;
        }

 

如果listen的内容是端口的话,nginx.conf中server段的内容就要是这样:

location ~ \.php|\.html(.*)$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}

 

而宝塔面板的nginx.conf中添加上面的代码不起作用,其实是因为宝塔面板调用配置文件内容时,PHP文件解析的代码调用的不是这个nginx.conf里面的内容,而是下面这个文件里的:

/www/server/nginx/conf/enable-php-74.conf

 

编辑enable-php-74.conf文件,将文件中的内容:

location ~ [^/]\.php(/|$)
    {
        try_files $uri =404;
        fastcgi_pass  unix:/tmp/php-cgi-74.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
        include pathinfo.conf;
    }

 

修改成下面这样:

location ~ \.php|\.html(.*)$
    {
        try_files $uri =404;
        fastcgi_pass  unix:/tmp/php-cgi-74.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
        include pathinfo.conf;
        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        include fastcgi_params;
    }

 

因为宝塔面板PHP是可以多版本共存,并且可以切换的,所以调用的配置文件都是相对应的。

 

比如我修改的这个enable-php-74.conf,对应的是PHP7.4,如果是8.0版本的话,就要修改enable-php-80.conf了。

 

修改完之后,重启php-fpm和nginx服务即可。

转载请注明原文地址:http://198484.com/?read-31.html
000

最新回复(0)