zoukankan      html  css  js  c++  java
  • 记一次安装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 的具体参数:

    [root@localhost ~]# 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; 这一项即可;若默认配置中没有则可以单独加上。

  • 相关阅读:
    Java解析XML汇总
    java百度地图api轨迹
    java百度地图api轨迹
    javascript百度和高德地图api轨迹回放
    javascript百度和高德地图api轨迹回放
    偷影子的人
    偷影子的人
    SharePoint 2010 的企业级搜索技术文章
    Export Farm Solution wsp Files SharePoint 2007 and 2010
    Configuring My Site in SharePoint 2010
  • 原文地址:https://www.cnblogs.com/readygood/p/9783558.html
Copyright © 2011-2022 走看看