本篇文章給大家分享的內容是nginx下啟動php-fpm出現錯誤的原因以及解決方案,有著一定的參考價值,有需要的朋友可以參考一下
一、背景
今天的伺服器好幾次都報502錯誤,可能是由於寫的指令碼太多了,加上使用的第三方外掛程式,響應逾時等等一系列問題。這邊碰到很多php-fpm方面的錯誤。記錄一下。
二、報錯資訊
1、 value is NULL for a ZEND_INI_PARSER_ENTRY
原因:
在重啟php-fpm的時候,系統提示報錯,需要輸入“systemctl status php5-fpm.service”來查看錯誤資訊。
ERROR: [/usr/local/php5/etc/php-fpm.conf:144] value is NULL for a ZEND_INI_PARSER_ENTRY
解決方案:
出現這個錯誤的原因是我們在寫php-fpm.conf檔案的時候,可能是寫的不夠標準或者寫錯了才造成的。這邊可以查看是哪一行報錯了:
//看好這個144,這就是你報錯的地方ERROR: [/usr/local/php5/etc/php-fpm.conf:144]
修改報錯資訊即可。
2、pm.start_servers(3) must not be less than pm.min_spare_servers(1) and not greater than pm.max_spare_servers(1)
原因:
這個錯誤可以參考:php官方文檔
在設定檔的時候忽略了一些參數的大小問題。
解決方案:
pm.max_children intpm 設定為 static 時表示建立的子進程的數量,pm 設定為 dynamic 時表示最大可建立的子進程的數量。必須設定。該選項設定可以同時提供服務的請求數限制。類似 Apache 的 mpm_prefork 中 MaxClients 的設定和 普通PHP FastCGI中的 PHP_FCGI_CHILDREN 環境變數。pm.start_servers in設定啟動時建立的子進程數目。僅在 pm 設定為 dynamic 時使用。預設值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2。pm.min_spare_servers int設定空閑服務進程的最低數目。僅在 pm 設定為 dynamic 時使用。必須設定。pm.max_spare_servers int設定空閑服務進程的最大數目。僅在 pm 設定為 dynamic 時使用。必須設定。
設定的這幾個參數的規律:
min_spare_servers ≤ start_servers ≤ max_spare_servers ≤ max_children
3、啟動php-fpm報錯:cannot get uid for user ‘www_data’
原因:
這個錯誤是啟動使用者的錯誤。設定檔預設是“www_data”這個使用者,但是這邊意思是要用當前的使用者啟動。因為我當前使用的是”pzsh”使用者,所以修改一下即可。
解決方案:
1、進入php-fpm.conf檔案
2、找到 user = www-data 修改為: user = pzsh
對應的使用者組group也修改為:group = pzsh
以上就是最近碰到的重啟php-fpm時候遇到的問題。其實很多錯誤資訊服務器已經提示給我們,讀懂英文即可。
end