PHP无法监听9000端口问题/502错误解决办法

配置nginx+php服务的时候,打开php文件就显示502,一般这个是php没启动的导致不能正常解析php文件。

因为nginx解析php文件是交给fastcgi_pass 来处理的,默认一般fastcgi_pass 有两种方式来解析php,一种是常见的tcp也就是监听9000端口,这边只做tcp的解析。

netstat -ntlp 查看9000端口是没有监听的,默认不再监听9000端口了,监听的是/tmp/php-cgi-56.sock

1.分析问题

我一般遇到这种问题都是先看nginx 的日志

cd  /usr/local/nginx/logs

vim  error.log



连接被拒绝

查看是否有监听到 9000 端口

netstat -ntulp

没有 监听9000端口

2.解决问题

找到 php-fpm.conf

[root@izwz975qccspcqtrgb5hwrz ~]# cd /usr/local/php/etc

[root@izwz975qccspcqtrgb5hwrz etc]# ls -l

-rw-r--r-- 1 root root  467 Sep 10 18:49 php-fpm.conf

将端口监听  改为9000


PHP无法监听9000端口问题/502错误解决办法_第1张图片

改完重启 php 

service  php-fpm  restart


发现可以监听到9000 端口了

PHP无法监听9000端口问题/502错误解决办法_第2张图片


但 访问项目 网址 又 出现了  access denied

解决问题

1.修改nginx 配置  的fastcgi_param 的值,并添加include fastcgi_param ,但是fastcgi_param的值的修改又有好几种说法,经过多次尝试之后

修改如下:

fastcgi_param  SCRIPT_FILENAME/data//wwwroot/default/victdo_ws/$fastcgi_script_name;

include        fastcgi_params;

reload配置文件,访问页面这次报错编程了access denied,访问被拒绝,查看了error日志没有发现错误提示,继续百度,

最终发现thinkphp框架的网址需要修改php环境的一个参数,引起问题的原因可能是:ThinkPHP的URL_MODEL问题导致ngnix解析问题。

于是我是这样解决的:

2.进入服务器,改php.ini文件。将

cgi.fix_pathinfo的值改成1。

重启php-fpm。

3.结果终于访问正常了。解决问题。至此thinkphp框架的网站可以访问了,接下来研究了下cgi.fix_pathinfo

似乎这个配置如果改成1形成一个上传漏洞,具体大家可以百度参考下,所以接下来我把nginx配置文件进一步修改

修改为php文件在上传目录的执行,也就是如下代码:值得注意的是这个代码需要添加php文件解析location块之前,否则无效!

location ~ ^/public/.*\.(php|php5) {   deny all;  }

你可能感兴趣的:(PHP无法监听9000端口问题/502错误解决办法)