nginx 啟用php解析及解決無法訪問報錯Primary script unknown的過程


 

先總結下這個問題出現的提示

  1. 訪問php頁面顯示file not found
  2. 查看error.log日志文件提示"Primary script unknown" while reading response header from upstream"

搜了好多材料,覺得最有用的是這幾篇,

一、寫nginx配置文件

nginx+php的配置與原理 見: https://blog.csdn.net/dengjiexian123/article/details/53358452

 

Nginx+Php-fpm運行原理詳解  https://segmentfault.com/a/1190000007322358

PHP-FPM 介紹https://segmentfault.com/a/1190000019510849

 

看了之后知道配置的原理了,於是在/etc/nginx/conf.d/ 下新建了一個php.conf的文件夾,內容如下:

server {
    listen       80; #監聽80端口,接收http請求
    server_name  www.example.com; #就是網站地址
    root /usr/share/nginx/html; # 准備存放代碼工程的路徑
#路由到網站根目錄www.example.com時候的處理。確保輸入www.example.com時,不用輸入/index.php就就可以訪問到index.php文件,而不是index.html文件 location / { index index.php; #跳轉到www.example.com/index.php autoindex on; } #當請求網站下php文件的時候,反向代理到php-fpm,這一段的目的是解析php文件,將php文件反向代理到php-fpm處理。 location ~ \.php$ { root /usr/share/nginx/html;//一開始自己這里寫的是/html,以為前面已經設置過root了,這里直接寫html就行,但后來發現不行,還是提示找不到,最后寫上完整地址就可以了 fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; //一開始這部分是SCRIPT_FILENAME /scripts$fastcgi_script_name;
//找了很多地方發現要吧scripts改成document_root
}

}

  

 建立該文件后,用nginx -t,測試nginx配置文件,沒問題后用nginx -s reload重載配置文件

 可是發現問題還沒解決。

 

二、設置php-fpm用戶權限

於是繼續網上搜解決辦法,發現可能是php-fpm權限問題,具體見這些文章:

Linux下搭建nginx+php環境的file not found問題反省https://www.jianshu.com/p/f92c2e53746d

以及

配置LNMP環境出現錯誤:Primary script unknown" while reading response header from upstreamhttps://blog.csdn.net/qq_27754983/article/details/68195727

得出結論,應該是php-fpm的的用戶及用戶組要調整。

php-fpm的主配置文件在 /etc/php-fpm.conf,該文件最后一句是include=/etc/php-fpm.d/*.conf,進入/etc/php-fpm.d文件夾

發現只有www.conf文件,打開該文件查看發現原user及group都是apache,將其調整為nobdoy,及任可用戶都可以。

在重新加載該配置文件就行了,但由於php-fpm不能通過systemctl以及service來reload配置文件,只能通過向其進程傳遞信號的方式使其重新加載配置文件

具體可以參考:

php-fpm的重啟方法https://blog.csdn.net/liuchen1314/article/details/79387684

方法是,首先找到php-fpm主進程id

 

然后輸入

就可以了,再在瀏覽器訪問www.example.com是就正常了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM