安装环境:
Nginx:Nginx1.12.2
PHP:PHP 7.2
系统:CentOS 7.4
安装方式:
Nginx与PHP都是yum安装的,具体步骤:
1.安装epel源再安装Nginx:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
~]# yum install -y nginx
2.安装PHP epel源再yum安装php7.2与相关依赖包
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install -y yum install php72w-common php72w-fpm php72w-opcache php72w-gd php72w-mysqlnd php72w-mbstring php72w-pecl-redis php72w-pecl-memcached php72w-devel
3.修改Nginx配置,将收到的以.php结尾的文件转发至php-fpm解析,最初的配置如下:
location ~ .php$ { #匹配规则 fastcgi_pass 127.0.0.1:9000; #交由fastcgi(php-fpm)处理 fastcgi_index index.php; include fastcgi_params; }
在加完这个配置后,自动Nginx和php-fpm发现都没有报错,在网页根目录创建index.php文件
<?php phpinfo(); ?>
访问时确出现了问题,状态码为200,但没有页面显示。
将Nginx配置修改后:
location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #加了这一项 include fastcgi_params; }
重启Nginx和php-fpm后便能正常显示php页面了。后来将 include fastcgi_params; 这一项删掉保留上一项,发现php网页也显示空白页。
在查阅资料后大致原因是:在Nginx+php-fpm的组合中,Nginx将php交由php-fpm处理时需要使用 fastcgi_params 中的内建参数来解析处理请求。
安装完成Nginx后会自动生成 fastcgi_params 文件。
查看Nginx中 fastcgi_params 的具体参数:
[[email protected] ~]# cat /etc/nginx/fastcgi_params fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REQUEST_SCHEME $scheme; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name;
原来在yum安装Nginx后默认配置中并没有 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 这一项,而这一项的意思是指脚本文件请求的路径,也就是说当访问127.0.0.1/index.php的时候,需要读取网站根目录下面的index.php文件,如果没有配置这一配置项时,nginx不回去网站根目录下访问.php文件,所以返回空白
所以若默认 fastcgi_params 中若有 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 参数,则在Nginx配置中只需要加 include fastcgi_params; 这一项即可;若默认配置中没有则可以单独加上。
原文地址:https://www.cnblogs.com/readygood/p/9783558.html