本文操作环境:Ubuntu 18.04 /Nginx 1.16 /PHP 7.2
1. 配置php.ini
首先定位配置文件php.ini 的位置。
php --ini |grep Loaded
输出例子:
root@wp2019:~# php --ini |grep Loaded
Loaded Configuration File: /etc/php/7.2/cli/php.ini
编辑php.ini
nano /etc/php/7.2/cli/php.ini
编辑fix_pathinfo的设置内容。
在这个文件中,找到设置cgi.fix_pathinfo的参数。 这将用分号(;)注释掉,默认设置为“1”。
这是一个非常不安全的设置,因为它告诉PHP尝试执行最近的文件,如果找不到请求的PHP文件,它可以找到它。 这可以允许用户以一种允 许他们执行不应允许执行的脚本的方式制作PHP请求。
取消注释并将其设置为“0”,如下所示:
cgi.fix_pathinfo=0
2. 配置nginx的PHP解析
nginx.conf 文件通常在“/etc/nginx”目录下。
通常有下面的描述。
注意,这里用户用从nginx改为www-data。
nginx安装好之后,会创建/etc/nginx/conf.d/default.conf文件,里面记录网站的配置信息。
listen - 定义Nginx将侦听的端口。
root - 定义存储网站服务的文档根目录。
index- 配置Nginx请求索引文件时优先处理index.php命名的文件。
server_name - 将此指令指向服务器的域名或公共IP地址。
location /- 第一个位置块包括一个try_files指令,该指令检查是否存在满足URI请求的文件。如果Nginx找不到合适的文件,则会返回404错误。
location ~ .php$- 此位置块通过将Nginx指向fastcgi-php.conf配置文件和php7.2-fpm.sock文件来处理实际的PHP处理,该文件声明了与哪个套接字相关联php-fpm。检查/etc/php/7.0/fpm/pool.d/www.conf文件并查找“listen”行。
location ~ /.ht- 通过添加deny all指令,如果任何.htaccess文件碰巧进入文档根目录,它们将不会被提供给访问者。
修改内容
将root(网站根目录) 设置放在外面。
将index设置放在外面。
打开.php文件的解析设置内容。就是“ location ~ .php$ { … }”这一段内容。
原文链接:https://blog.csdn.net/sitebus/article/details/97476297