問題背景
配置nginx+php服務的時候,發現網站能打開html,打開php文件就顯示502,一般這個是php沒啟動啊啥的導致不能正常解析php文件。
原因分析
因為nginx解析php文件是交給fastcgi_pass 來處理的,默認一般fastcgi_pass 有兩種方式來解析php,一種是常見的tcp也就是監聽9000端口,這邊只做tcp的解析。
netstat -ntlp 查看9000端口是沒有監聽的,默認不再監聽9000
端口了,監聽的是/tmp/php-cgi-56.sock
[root@localhost pazzn]# netstat -ntlp ###沒有9000端口監聽 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13031/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1425/sshd tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN 13031/nginx: master tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 3818/python tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3467/master tcp6 0 0 :::22 :::* LISTEN 1425/sshd tcp6 0 0 ::1:25 :::* LISTEN 3467/master tcp6 0 0 :::3306 :::* LISTEN 3401/mysqld
解決方案
1.找到/php.conf
[root@localhost ~]# find / -name php-fpm.conf /www/server/php/56/etc/php-fpm.conf
[root@localhost ~]#vi /www/server/php/56/etc/php-fpm.conf
2.用;
注釋掉sock監聽的方式,增加9000端口監聽
[global] pid = /www/server/php/56/var/run/php-fpm.pid error_log = /www/server/php/56/var/log/php-fpm.log log_level = notice [www] #listen = /tmp/php-cgi-56.sock listen = 9000 listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www pm = dynamic pm.status_path = /phpfpm_56_status pm.max_children = 80 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 20 request_terminate_timeout = 100 request_slowlog_timeout = 30 slowlog = var/log/slow.log
3.重啟php,完美打開解析php文件
[root@localhost ]# systemctl restart php-fpm-56.service
注意:一定要先保證nginx.conf的配置文件是正確的哦。
參考鏈接:https://blog.csdn.net/moshowgame/article/details/84135977