linux php7-fpm啟動失敗的解決辦法:1、修改“php-fpm.conf”文件中的“Error_log”項(xiàng);2、修改php的配置文件位置;3、將nginx修改為當(dāng)前系統(tǒng)的用戶名;4、直接創(chuàng)建nginx用戶和用戶組即可。
php-fpm啟動失敗的解決(centos安裝PHP后)
在centOS7.0上編譯安裝php7.2.1后,因?yàn)樾录恿藀hp擴(kuò)展,所以需要重啟php-fpm;
一、首先說一下我的配置,關(guān)于配置 php-fpm:
剛開始安裝后,這幾個(gè)文件是沒有的,需要逐個(gè)cp創(chuàng)建,然后啟動即可,如果沒有報(bào)錯,則不用看 “二、php-fpm 啟動報(bào)錯:”
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
1、關(guān)于配置 php-fpm
cp?php.ini-development?/usr/local/php7/etc/php.ini cp?/usr/local/php7/etc/php-fpm.conf.default?/usr/local/php7/etc/php-fpm.conf cp?/usr/local/php7/etc/php-fpm.d/www.conf.default?/usr/local/php7/etc/php-fpm.d/www.conf
2、
啟動php-fpm:
/usr/local/php/sbin/php-fpm
二、php-fpm 啟動報(bào)錯:
原因及解決辦法:
1、直接運(yùn)行,有報(bào)錯找不到配置文件。
$?php-fpm [11-Jan-2014?16:03:03]?ERROR:?failed?to?open?configuration?file?'/private/etc/php-fpm.conf':?No?such?file?or?directory?(2) [11-Jan-2014?16:03:03]?ERROR:?failed?to?load?configuration?file?'/private/etc/php-fpm.conf' [11-Jan-2014?16:03:03]?ERROR:?FPM?initialization?failed
可以在/private/etc/ 目錄下生成配置文件,需要root權(quán)限(sudo)
或者在普通用戶有權(quán)限的目錄里放置配置文件,通過–fpm-config參數(shù)指定配置文件的位置,如下:
#?cp?/private/etc/php-fpm.conf.default?/etc/php-fpm.conf $?php-fpm?--fpm-config?/etc/php-fpm.conf [11-Jan-2014?16:10:49]?ERROR:?failed?to?open?error_log?(/usr/var/log/php-fpm.log):?No?such?file?or?directory?(2) [11-Jan-2014?16:10:49]?ERROR:?failed?to?post?process?the?configuration [11-Jan-2014?16:10:49]?ERROR:?FPM?initialization?failed
錯誤信息顯示:不能正確的打開”日志“文件,原因是默認(rèn)在/usr/var目錄下工作,可以修改配置文件指定正確的日志文件路徑
$?vim?/usr/local/etc/php-fpm.conf
修改php-fpm.conf文件中的error_log項(xiàng),默認(rèn)前綴是/usr/var ,但并沒有這個(gè)路徑
error_log?=?/usr/local/var/log/php-fpm.log pid?=?/usr/local/var/run/php-fpm.pid
或者不修改配置文件中配置項(xiàng)的路徑,在php-fpm的運(yùn)行參數(shù)中(-p)指定放置運(yùn)行時(shí)文件的相對路徑前綴
$?php-fpm?--fpm-config?/php-fpm.conf??--prefix?/usr/local/var
到此,php-fpm守護(hù)進(jìn)程已經(jīng)基本可以正確的啟動了。
報(bào)錯信息:
[12-Jul-2013?17:18:57]?ERROR:?[/usr/local/php5/etc/php-fpm.conf:144]?value?is?NULL?for?a?ZEND_INI_PARSER_ENTRY [12-Jul-2013?17:18:57]?ERROR:?failed?to?load?configuration?file?'/usr/local/php5/etc/php-fpm.conf' [12-Jul-2013?17:18:57]?ERROR:?FPM?initialization?failed
2、出錯的原因主要是/usr/local/php5/sbin/php-fpm配置錯誤,仔細(xì)檢查下。我的錯誤就是group = www這里少了=號。所以出錯了
[root@localhost?~]#?/usr/local/php5/sbin/php-fpm PHP:??syntax?error,?unexpected?TC_STRING?in?/usr/local/php5/etc/php.ini?on?line?211
3、啟動php-fpm 報(bào)錯ERROR: [pool www] cannot get uid for user ‘nginx’
方法一:
當(dāng)編譯好php7之后用以下命令啟動
/usr/local/php/sbin/php-fpm
然后報(bào)出這樣的錯誤:
[07-Dec-2018?17:59:31]?ERROR:?[pool?www]?cannot?get?uid?for?user?'nginx' [07-Dec-2018?17:59:31]?ERROR:?FPM?initialization?failed
修改php的配置文件位置在www.conf
vi?/usr/local/php/etc/php-fpm.d/www.conf
將nginx修改為當(dāng)前系統(tǒng)的用戶名如下:
;?Unix?user/group?of?processes ?;?Note:?The?user?is?mandatory.?If?the?group?is?not?set,?the?default?user's?group ?;???????will?be?used. ?user?=?www.emam.cn ?group?=?www.emam.cn
方法二:
直接創(chuàng)建nginx用戶和用戶組
useradd?nginx groupadd?nginx usermod?-G?nginx?nginx
三、php-fpm 內(nèi)容擴(kuò)展
啟動php-fpm:
/usr/local/php/sbin/php-fpm
php 5.3.3 以后的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,所以不要再看這種老掉牙的命令了,需要使用信號控制:
master進(jìn)程可以理解以下信號
int, TERM 立刻終止
QUIT 平滑終止
USR1 重新打開日志文件
USR2 平滑重載所有worker進(jìn)程并重新載入配置和二進(jìn)制模塊
一個(gè)簡單直接的重啟方法:
先查看php-fpm的master進(jìn)程號
#?ps?aux|grep?php-fpm root?????21891??0.0??0.0?112660???960?pts/3????R+???16:18???0:00?grep?--color=auto?php-fpm root?????42891??0.0??0.1?182796??1220??????????Ss???4月18???0:19?php-fpm:?master?process?(/usr/local/php/etc/php-fpm.conf) nobody???42892??0.0??0.6?183000??6516??????????S????4月18???0:07?php-fpm:?pool?www nobody???42893??0.0??0.6?183000??6508??????????S????4月18???0:17?php-fpm:?pool?www
重啟php-fpm:
kill?-USR2?42891
OK了。
上面方案一般是沒有生成php-fpm.pid文件時(shí)使用,如果要生成php-fpm.pid,使用下面這種方案:
上面master進(jìn)程可以看到,matster使用的是/usr/local/php/etc/php-fpm.conf這個(gè)配置文件,cat /usr/local/php/etc/php-fpm.conf 發(fā)現(xiàn):
[global] ;?Pid?file ;?Note:?the?default?prefix?is?/usr/local/php/var ;?Default?Value:?none ;pid?=?run/php-fpm.pid
pid文件路徑應(yīng)該位于/usr/local/php/var/run/php-fpm.pid,由于注釋掉,所以沒有生成,我們把注釋去除,再kill -USR2 42891 重啟php-fpm,便會生成pid文件,下次就可以使用以下命令重啟,關(guān)閉php-fpm了:
php-fpm 關(guān)閉:
kill?-INT?'cat?/usr/local/php/var/run/php-fpm.pid'
php-fpm 重啟:
kill?-USR2?'cat?/usr/local/php/var/run/php-fpm.pid'