nginx php空白页怎么办,nginx空白页原因分析与解决方法

发布时间:2020-09-14编辑:脚本学堂
nginx php空白页怎么办,nginx出现空白页是什么原因引起的,在nginx中html页面浏览正常,但php文件打开出现空白页面,问题出在nginx配置中fastcgi_params参数上。

nginx php空白页如何处理?

 

nginx空白页

安装完nginx,html页面能正常浏览 但是php文件的页面打开后是一篇空白。

查看php-fpm日志与nginx日志都没找到问题,后来发现是缺少这么一句话在nginx的配置文件中:
 

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

这句用来定义php中用到的服务器变量 也就是$_SERVER
参考:http://wiki.nginx.org/NginxHttpFcgiModule ,如下:
This module allows Nginx to interact with FastCGI processes and control what parameters are passed to the process。

其实也就是服务器向处理php的cgi传递过去他需要的一些参数,而至少要有下面的两个参数php才能执行起来:
Below is an example of the minimally necessary parameters for PHP:
 

fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
 

Parameter SCRIPT_FILENAME is used by PHP for determining the name of script to execute, and QUERY_STRING contains the parameters of the request.

所以,在没有定义SCRIPT_FILENAME这个系统变量的时候 php是没法解释执行的。
这个变量的定义可以写在nginx的配置文件nginx.conf里,也可以写在外部,用include的方式在nginx.conf里包含进来。

二、nginx白屏空白页问题

nginx php 返回200,但是空白页

ngxin;php-fpm安装后,html静态页面没问题,但是phpinfo页面虽然返回200,但总是空白页。

也没有任何报错,考虑应该是nginx已经将php页面转移给php处理了,所以问题应该在php的配置上,经过查找,发现需要在nginx中加入:
fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;

注意,安装完nginx后默认的fastcgi_params配置文件中没有上面这句话。

在nginx.conf中的
 

location ~ .php$ {
    root   html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    includefastcgi_params;
}
 

或者在fastcgi_params配置文件中加入:
 

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;

重启nginx,便可以显示出页面了。