首頁  >  文章  >  後端開發  >  linux php7-fpm啟動失敗怎麼辦

linux php7-fpm啟動失敗怎麼辦

藏色散人
藏色散人原創
2023-02-20 09:20:464559瀏覽

linux php7-fpm啟動失敗的解決方法:1、修改「php-fpm.conf」檔案中的「error_log」項目;2、修改php的設定檔位置;3、將nginx修改為目前系統的使用者名稱;4、直接建立nginx使用者和使用者群組即可。

linux php7-fpm啟動失敗怎麼辦

本教學操作環境:Windows10系統、php7.2.1版、DELL G3電腦

linux php7-fpm啟動失敗怎麼辦?

php-fpm啟動失敗的解決(centOS安裝PHP後)

在centOS7.0上編譯安裝php7.2.1後,因為新增了php擴展,所以需要重啟php-fpm;

 

一、先說一下我的配置,關於配置php-fpm:

#剛開始安裝後,這幾個檔案是沒有的,需要逐個cp創建,然後啟動即可,如果沒有報錯,則不用看「二、php-fpm 啟動報錯:」

1、關於設定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 啟動錯誤:

原因及解決方法:

 

1、直接運行,有報錯找不到設定檔。

$ 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權限(sudo)

或在普通使用者有權限的目錄裡放置設定文件,透過--fpm- config參數指定設定檔的位置,如下:

# 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

錯誤訊息顯示:無法正確的開啟」日誌「文件,原因是預設在/usr/var目錄下工作,可以修改設定檔指定正確的日誌檔案路徑

$ vim /usr/local/etc/php-fpm.conf

修改php-fpm.conf檔案中的error_log項,預設前綴是/usr/var ,但並沒有這個路徑

error_log = /usr/local/var/log/php-fpm.log
pid = /usr/local/var/run/php-fpm.pid

或不修改設定檔中設定項的路徑,在php-fpm的運行參數中(-p)指定放置運行時檔案的相對路徑前綴

$ php-fpm --fpm-config /php-fpm.conf  --prefix /usr/local/var

到此,php-fpm守護程序已經基本上可以正確的啟動了。

錯誤訊息:

[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設定錯誤,仔細檢查下。我的錯誤就是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 封包錯誤ERROR: [pool www] cannot get uid for user 'nginx'

#方法一:

當編譯好php7之後用以下指令啟動

/usr/local/php/sbin/php-fpm

然後報出這樣的錯誤:

[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修改為目前系統的使用者名稱如下:

; 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

方法二:

直接建立nginx使用者和使用者群組

useradd nginx
groupadd nginx
usermod -G nginx nginx

 

三、php-fpm 內容擴充

啟動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行程可以理解以下訊號

INT, TERM 立即終止

QUIT 平滑終止

USR1 重新開啟日誌檔案

USR2 平滑重載所有worker進程並重新載入設定和二進位模組

 

一個簡單直接的重新啟動方法:

先查看php-fpm的master行程號碼

 

# 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檔時使用,如果要產生php-fpm.pid,使用下面這種方案:

上面master程序可以看到,matster使用的是/usr/local/php/etc/php-fpm.conf這個設定文件,cat /usr/local/php/etc/php-fpm.conf 發現:

[global]
; Pid file
; Note: the default prefix is /usr/local/php/var
; Default Value: none
;pid = run/php-fpm.pid

pid檔案路徑應該位於/usr/local/php/var/run/php-fpm.pid,由於註解掉,所以沒有生成,我們把註解去除,再kill -USR2 42891 重啟php-fpm,便會生成pid文件,下次就可以使用以下命令重啟,關閉php-fpm了:

php-fpm 關閉:

kill -INT 'cat /usr/local/php/var/run/php-fpm.pid'

php-fpm 重啟:

kill -USR2 'cat /usr/local/php/var/run/php-fpm.pid'

推薦學習:《PHP視頻教程

以上是linux php7-fpm啟動失敗怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn