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 

service  php-fpm  restart


发现可以监听到9000 端口了


但 访问项目 网址 又 出现了  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;  }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇是Nginx安装配置PHP(FastCGI)环境的教程。Nginx不支持对外部程序的直接调用或者解析,所有的外...
    SkTj阅读 8,293评论 2 20
  • [toc] 在公司的网站上推荐使用 docker 容器来安装环境,一个项目一个 docker 容器。 、、 百度百...
    Mdvtrw阅读 5,360评论 0 1
  • Nginx的工作原理 1.Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,...
    架构飞毛腿阅读 11,318评论 1 27
  • FastCGI模块模块允许nginx同FastCGI协同工作,并且控制哪些参数将被安全传递。 一、CGI和Fast...
    北山学者阅读 13,066评论 3 8
  • 打开手机短信的那一刻,学姐愣住了 您的借记卡账户xxx,交易后余额100.34 充满问号脸的她,再次揉揉睡眼惺忪的...
    M木子神经质M阅读 2,801评论 0 0