神雕大神的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服务即可。