PHP無法監(jiān)聽9000端口問題/502錯(cuò)誤解決辦法

配置nginx+php服務(wù)的時(shí)候,打開php文件就顯示502,一般這個(gè)是php沒啟動(dòng)的導(dǎo)致不能正常解析php文件。

因?yàn)閚ginx解析php文件是交給fastcgi_pass 來處理的,默認(rèn)一般fastcgi_pass 有兩種方式來解析php,一種是常見的tcp也就是監(jiān)聽9000端口,這邊只做tcp的解析。

netstat -ntlp 查看9000端口是沒有監(jiān)聽的,默認(rèn)不再監(jiān)聽9000端口了,監(jiān)聽的是/tmp/php-cgi-56.sock

1.分析問題

我一般遇到這種問題都是先看nginx?的日志

cd? /usr/local/nginx/logs

vim? error.log



連接被拒絕

查看是否有監(jiān)聽到 9000?端口

netstat -ntulp

沒有?監(jiān)聽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

將端口監(jiān)聽? 改為9000


改完重啟?php?

service? php-fpm? restart


發(fā)現(xiàn)可以監(jiān)聽到9000?端口了


但?訪問項(xiàng)目?網(wǎng)址?又?出現(xiàn)了??access denied

解決問題

1.修改nginx?配置? 的fastcgi_param 的值,并添加include fastcgi_param ,但是fastcgi_param的值的修改又有好幾種說法,經(jīng)過多次嘗試之后

修改如下:

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

include? ? ? ? fastcgi_params;

reload配置文件,訪問頁面這次報(bào)錯(cuò)編程了access denied,訪問被拒絕,查看了error日志沒有發(fā)現(xiàn)錯(cuò)誤提示,繼續(xù)百度,

最終發(fā)現(xiàn)thinkphp框架的網(wǎng)址需要修改php環(huán)境的一個(gè)參數(shù),引起問題的原因可能是:ThinkPHP的URL_MODEL問題導(dǎo)致ngnix解析問題。

于是我是這樣解決的:

2.進(jìn)入服務(wù)器,改php.ini文件。將

cgi.fix_pathinfo的值改成1。

重啟php-fpm。

3.結(jié)果終于訪問正常了。解決問題。至此thinkphp框架的網(wǎng)站可以訪問了,接下來研究了下cgi.fix_pathinfo

似乎這個(gè)配置如果改成1形成一個(gè)上傳漏洞,具體大家可以百度參考下,所以接下來我把nginx配置文件進(jìn)一步修改

修改為php文件在上傳目錄的執(zhí)行,也就是如下代碼:值得注意的是這個(gè)代碼需要添加php文件解析location塊之前,否則無效!

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容