源碼編譯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文件,所以返回空白

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