php-fpm報(bào)502問題的解決辦法
搭建lnmp完lnmp環(huán)境后,測試時(shí)出現(xiàn)502報(bào)錯(cuò),看到這個(gè)問題,我立刻想到是php-fpm沒有起來,但是我用 ps -ef | grep php-fpm 截取 php-fpm 的進(jìn)程,發(fā)現(xiàn)是有的,這時(shí)我有查看nginx的錯(cuò)誤日志,發(fā)現(xiàn)錯(cuò)誤信息是:
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版本的時(shí)候沒有出現(xiàn)過這個(gè)問題
思路:發(fā)現(xiàn)php-fpm的listen是unix sock方式運(yùn)行的,問題可能出在php-fpm上。既然沒有這個(gè)文件,就先把文件創(chuàng)建出來 1、創(chuàng)建這個(gè)文件,并賦予權(quán)限,因?yàn)槲以诰幾g的時(shí)候是用www用戶,所以將/tmp/php-cgi.sock的屬主和屬組都授權(quán)為www
touch /tmp/php-cgi.sock
chown www.www /tmp/php-cgi.sock
重啟ngix和php-fpm發(fā)現(xiàn)還是502的問題
2、我在網(wǎng)上也查看了下,說是其中 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、同時(shí)修改php-fpm的配置文件php-fpm.conf,將listen = 127.0.0.1:9000改為
listen = /tmp/php-cgi.sock#這個(gè)是設(shè)置 /tmp/php-cgi.sock 權(quán)限用的listen.owner = wwwlisten.group = wwwlisten.mode = 0660
再次重啟ngix和php-fpm,問題解決
總結(jié):
1、其實(shí)這個(gè)問題總體就是nginx與php-fpm的交互問題,看我們選擇是sock方式還是http方式,但是不管選擇哪一種,我們都需要統(tǒng)一 2、我在網(wǎng)上看到有人說將max_children 進(jìn)程改大,其實(shí)這種情況我之前遇到過,它適用于本來php運(yùn)行正常,突然出現(xiàn)502的問題,這個(gè)問題是php-fpm隊(duì)列滿了,出現(xiàn)連接拒絕的錯(cuò)誤。如果有問題,可以參考我的博客:http://blog.csdn.net/m0_37886429/article/details/70048754 3、還有人說將php-fpm配置文件里有backlog,backlog是linux服務(wù)器在socket處理連接數(shù)的定義,phpfpm默認(rèn)為-1,將-1改為4096,重啟php-fpm問題。 4、其實(shí)我們不管選擇哪一種,主要是針對自己的問題,先要看報(bào)錯(cuò),然后再對癥下藥,不要這一種試試那一種試試。
以上就是php-fpm報(bào)502問題的解決辦法的詳細(xì)內(nèi)容,更多關(guān)于php-fpm報(bào)502問題的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
