php-fpm報502問題的解決辦法
搭建lnmp完lnmp環境后,測試時出現502報錯,看到這個問題,我立刻想到是php-fpm沒有起來,但是我用 ps -ef | grep php-fpm 截取 php-fpm 的進程,發現是有的,這時我有查看nginx的錯誤日志,發現錯誤信息是:
2017/05/05 17:08:45 [crit] 3258#0: *2 connect() to unix:/tmp/php-cgi.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.88.1, server: 192.168.88.133, request: 'GET /index.php HTTP/1.1', upstream: 'fastcgi://unix:/tmp/php-cgi.sock:', host: '192.168.88.134'

備注:php我用的版本是7.1.4的,最新的版本,之前用5.6版本的時候沒有出現過這個問題
思路:發現php-fpm的listen是unix sock方式運行的,問題可能出在php-fpm上。既然沒有這個文件,就先把文件創建出來 1、創建這個文件,并賦予權限,因為我在編譯的時候是用www用戶,所以將/tmp/php-cgi.sock的屬主和屬組都授權為www
touch /tmp/php-cgi.sock
chown www.www /tmp/php-cgi.sock
重啟ngix和php-fpm發現還是502的問題
2、我在網上也查看了下,說是其中 fastcgi_pass為配置nginx與php-fpm的交互路徑,一般有兩種方式 sock方式:fastcgi_pass unix:/tmp/php-cgi.sock; http方式:fastcgi_pass 127.0.0.1:9000; 任選其中一種即可,但必須和php-fpm的配置一致。 后來我就在nginx的配置文件中加上一下代碼
location ~.php$ {
root /root/wwwroot;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
3、同時修改php-fpm的配置文件php-fpm.conf,將listen = 127.0.0.1:9000改為
listen = /tmp/php-cgi.sock#這個是設置 /tmp/php-cgi.sock 權限用的listen.owner = wwwlisten.group = wwwlisten.mode = 0660

再次重啟ngix和php-fpm,問題解決

總結:
1、其實這個問題總體就是nginx與php-fpm的交互問題,看我們選擇是sock方式還是http方式,但是不管選擇哪一種,我們都需要統一 2、我在網上看到有人說將max_children 進程改大,其實這種情況我之前遇到過,它適用于本來php運行正常,突然出現502的問題,這個問題是php-fpm隊列滿了,出現連接拒絕的錯誤。如果有問題,可以參考我的博客:http://blog.csdn.net/m0_37886429/article/details/70048754 3、還有人說將php-fpm配置文件里有backlog,backlog是linux服務器在socket處理連接數的定義,phpfpm默認為-1,將-1改為4096,重啟php-fpm問題。 4、其實我們不管選擇哪一種,主要是針對自己的問題,先要看報錯,然后再對癥下藥,不要這一種試試那一種試試。
以上就是php-fpm報502問題的解決辦法的詳細內容,更多關于php-fpm報502問題的資料請關注好吧啦網其它相關文章!
相關文章:
1. 詳解Android studio 動態fragment的用法2. 編程語言PHP在Web開發領域的優勢在哪?3. 什么是python的自省4. Spring Boot和Thymeleaf整合結合JPA實現分頁效果(實例代碼)5. 解決Android studio xml界面無法預覽問題6. 基于android studio的layout的xml文件的創建方式7. Android如何加載Base64編碼格式圖片8. Springboot Druid 自定義加密數據庫密碼的幾種方案9. Vue封裝一個TodoList的案例與瀏覽器本地緩存的應用實現10. 圖文詳解vue中proto文件的函數調用

網公網安備