源码编译php7.4问题总结

背景

业务代码写多了,也就想搞搞运维知识,刚好有空,借助这段时间,再搭建多一个lnmp环境,虽说这是PHPer比较入门的技能,不过太久没搞,并且每次我源码编译PHP,就会出现一大堆问题,也是怕了,这些也遇到一个解决了好久的问题,这里记录一下

问题描述

nginx无法解析PHP,访问inde.php文件返回空白,也没有报错

问题排查

1、是不是nginx没有配置对,首先排查nginx.conf和我指定域名的配置,这里是www.yzb.com.conf

listen 80;

location ~ .*\.(php|php5)?$
    {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param ENV test;
        fastcgi_index index.php;
       
    }
    access_log /var/log/nginx/php_access.log main;

主要转发机制都有,而且php_access.log有数据,说明这段已经跑成功了

2、PHP是不是有问题

www.conf里

user = www
group = www

同时查看9000端口已经被php-fpm监听,没问题

3、代码检查

只是一个 phpinfo();函数,也没啥问题

问题解决

最后无意中搜索到一篇解决方案

还是nginx.conf配置错了

location ~ .*\.(php|php5)?$
    {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param ENV test;
        fastcgi_index index.php;
       include fastcgi_params;
    }

然后

vim /etc/nginx/fastcgi_params

加入 fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

发现可以了

但是为什么呢,nginx正常把php文件解析请求转发给php,这时候php-fpm应该就要开始工作了啊

深入了解

在 nginx+php-fpm这种组合中,nginx将php交由php-fpm处理时需要使用fastcgi_params中的内建参数来解析处理请求,而安装完成nginx后就会自动生成fastcgi_params这个文件

fastcgi_params文件里,为什么要添加 fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

因为这是指 脚本文件请求的路径,也就是说当访问127.0.0.1/index.php的时候,需要读取网站根目录下面的index.php文件,如果没有配置这一个配置项的话,nginx不会去网站根目录下访问.php文件,所以返回空白

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章