dnmp環境下php-fpm以root權限執行

1、問題描述

最近在作鏈接二維碼掃描機心跳鏈接時,發現二維碼掃描機有固定IP,無固定端口,服務器沒法主動發送心跳。。。想了不少辦法搞定鏈接,試過swoole,wokerman,都以爲不必,最終使用exec()方法模擬ping鏈接最有效,本地調試好放服務器上發現沒法執行,懷疑是無權限,一番找資料後,美滋滋的把一切改好,問題來了,訪問各類502.。。。

2、排錯

一臉黑線後,開始排錯。環境是dnmp,遵循docker初衷,各個服務分離,每一個服務單獨運行在獨立容器內。進入容器內查找問題,發現命令不全,沒法使用sudo命令,這給排錯帶來了不小的麻煩,只能修改配置文件。修改以前,/etc/local/nginx.conf中user是nginx,改回nginx後依舊報錯,繼續修改php-fpm,將user和group修改回apache後,再次訪問,網頁正常訪問,exec()該訪問不通仍是不通。

nginx報錯以下

2019/04/14 18:22:22 [crit] 24#24: *585 SSL_do_handshake() failed (SSL: error:1417D0A0:SSL routines:tls_process_client_hello:length too short) while SSL handshaking, client: 108.178.16.154, server: 0.0.0.0:443
複製代碼

php報錯以下

ERROR: [pool www] please specify user and group other than root
ERROR: FPM initialization failed
複製代碼

在nginx和php沒法定位錯誤的狀況下,查看進程

ps -le | grep php-fpm
複製代碼

發現全部進程都是以root進程在運行,並沒有錯誤。後來查閱資料發現,

pool是影響這個問題的關鍵,解決辦法是

php-fpm -R
複製代碼

輸入命令,重啓容器,everything be ok!!!!

相關文章
相關標籤/搜索