记一次安装Nginx+php-fpm安装后无法解析.php文件,状态码200,但显示空白页

安装环境:

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

时间: 2024-10-31 20:18:39

记一次安装Nginx+php-fpm安装后无法解析.php文件,状态码200,但显示空白页的相关文章

Linux:在已安装nginx情况下安装nginx模块

在已安装nginx情况下安装nginx模块 nginx第三方模块安装方法: 代码如下: ./configure --prefix=/你的安装目录  --add-module=/第三方模块目录 1..查看nginx编译安装时的命令,安装了哪些模块 代码如下: #/usr/local/webserver/nginx/sbin/nginx -V 2.切换到root用户 代码如下: #su root 3.在已安装nginx情况下安装nginx模块(username为系统用户名) 代码如下: # sudo

Ubuntu Server 上在安装Nginx时执行./confgiure后提示:C compiler cc is not found

场景 Ubuntu Server 16.04 LTS上怎样安装下载安装Nginx并启动: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102828075 在上面进行安装Nginx前配置检查时提示: checking for C compiler .. not found ./configure: error: C compiler cc is not found 注: 博客: https://blog.csdn.net/ba

CentOS 7.0编译安装Nginx+MySQL+PHP

转自http://www.centoscn.com/CentosServer/www/2014/0904/3673.html 准备篇: CentOS 7.0系统安装配置图解教程 http://www.centoscn.com/image-text/setup/2014/0724/3342.html 一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi

Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.0 + Mariadb 10.1.9 + Nginx 1.9.9 + PHP 7.0.0)

环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1503-01.iso 安装步骤: 1.准备 1.1 设置静态IP.DNS地址(网络设备名称有可能不一样,这里是eno16780032,如使用DHCP获取动态IP,可忽略) [[email protected] ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno16780032 找到BOOTPROTO,并且修

CentOS 7编译安装Nginx+MySQL+PHP

一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 2.安装iptables防火墙 yum install iptables-services #安装 vi /etc/sysconfig/ip

CentOS7 安装 Nginx 1.12.1

安装准备: nginx 依赖的一些 lib 库: yum install gcc-c++ yum install pcre pcre-devel yum install zlib zlib-devel yum install openssl openssl--devel 安装 Nginx 检查一下安装已有的 nginx find -name nginx 如果系统安装了Nginx,那么卸载 yum remove nginx 然后开始安装,首先进入 /usr/local 目录 cd /usr/loc

如何在阿里云Centos下安装Nginx

Nginx("engine x")是一款轻量级的HTTP和反向代理服务器.相比于Apache.lighttpd等,它具有占有内存少.并发能力强.稳定性高等优势.它最常见的用途就是提供反向代理服务. 在Linux下我们需要下载Nginx的源代码包并且手动编译,而不是用包管理工具,例如Yum.Aptitude来安装.因为我们需要在编译时对Nginx进行配置,不得不手动编译,这样也就会依赖一些工具和库文件. 首先,需要安装C语言的编译环境,因为Nginx是C语言编写的.通常大多数Linux都

linux nginx轻量级服务器 - 安装篇

linux 下安装nginx: 1. 安装 gcc / g++ # apt-get  install build-essential 已安装的无视 2. 安装openssl: # apt-get  install openssl # apt-get  install libssl-dev 3. 安装pcre 下载源码:http://download.csdn.net/detail/wei_xiaox126/8304511 解压: tar xvf  .... # ./configure # mak

CentOS7下yum方式安装nginx

最近把centos升级到7,发现用之前的一些安装nginx的方法安装后有依赖包冲突,估计是 linux版本和nginx版本不匹配导致. 上官网查看文档, 有针对centos7的安装方法,记录下: step1:  创建yum数据源文件   /etc/yum.repos.d/nginx.repo step2: 编辑nginx.repo文件内容如下并保存 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basear