linux php7-fpm啟動(dòng)失敗的解決辦法:1、修改“php-fpm.conf”文件中的“error_log”項(xiàng);2、修改php的配置文件位置;3、將nginx修改為當(dāng)前系統(tǒng)的用戶名;4、直接創(chuàng)建nginx用戶和用戶組即可。
本教程操作環(huán)境:Windows10系統(tǒng)、php7.2.1版、DELL G3電腦
linux php7-fpm啟動(dòng)失敗怎么辦?
php-fpm啟動(dòng)失敗的解決(centOS安裝PHP后)
在centOS7.0上編譯安裝php7.2.1后,因?yàn)樾录恿藀hp擴(kuò)展,所以需要重啟php-fpm;
一、首先說一下我的配置,關(guān)于配置 php-fpm:
剛開始安裝后,這幾個(gè)文件是沒有的,需要逐個(gè)cp創(chuàng)建,然后啟動(dòng)即可,如果沒有報(bào)錯(cuò),則不用看 “二、php-fpm 啟動(dòng)報(bào)錯(cuò):”
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、
啟動(dòng)php-fpm:
/usr/local/php/sbin/php-fpm
二、php-fpm 啟動(dòng)報(bào)錯(cuò):
原因及解決辦法:
1、直接運(yùn)行,有報(bào)錯(cuò)找不到配置文件。
$ 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
錯(cuò)誤信息顯示:不能正確的打開”日志“文件,原因是默認(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í)文件的相對(duì)路徑前綴
$ php-fpm --fpm-config /php-fpm.conf --prefix /usr/local/var
到此,php-fpm守護(hù)進(jìn)程已經(jīng)基本可以正確的啟動(dòng)了。
報(bào)錯(cuò)信息:
[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、出錯(cuò)的原因主要是/usr/local/php5/sbin/php-fpm配置錯(cuò)誤,仔細(xì)檢查下。我的錯(cuò)誤就是group = www這里少了=號(hào)。所以出錯(cuò)了
[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、啟動(dòng)php-fpm 報(bào)錯(cuò)ERROR: [pool www] cannot get uid for user 'nginx'
方法一:
當(dāng)編譯好php7之后用以下命令啟動(dòng)
/usr/local/php/sbin/php-fpm
然后報(bào)出這樣的錯(cuò)誤:
[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ò)展
啟動(dòng)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)等命令,所以不要再看這種老掉牙的命令了,需要使用信號(hào)控制:
master進(jìn)程可以理解以下信號(hào)
INT, TERM 立刻終止
QUIT 平滑終止
USR1 重新打開日志文件
USR2 平滑重載所有worker進(jìn)程并重新載入配置和二進(jìn)制模塊
一個(gè)簡(jiǎn)單直接的重啟方法:
先查看php-fpm的master進(jìn)程號(hào)
# 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,便會(huì)生成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'
推薦學(xué)習(xí):《PHP視頻教程》