PHP-FPM,全稱為PHP FastCGI Process Manager,是一個類似于CGI的程序,用來使PHP處理文件更加高效。其原理為,PHP-FPM以獨立進程的形式啟動,并監聽一個Unix Socket,當Nginx或Apache等Web服務器請求處理PHP文件時,將這些請求通過Unix Socket交給PHP-FPM處理。
一般來說,PHP-FPM的默認配置可以滿足絕大多數的需求。但是,如果我們需要實現更高級的功能,比如修改PHP-FPM池的空閑進程的數量、禁用某些指令、設置超時時間等,就需要對PHP-FPM進行配置。
接下來,筆者將介紹PHP-FPM的一些常用配置選項,以供讀者參考。
一、進程池配置
如下是一個進程池的配置范例:
```
[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.process_idle_timeout = 10s
```
上述配置用于指定一個名為“www”的進程池,該進程池的用戶和組都為www-data,監聽的IP地址和端口為127.0.0.1:9000,進程管理方式為動態管理。
其中,pm.max_children參數代表的是該進程池最多允許創建的子進程數量,pm.start_servers是已經創建的空閑子進程數目,pm.min_spare_servers是空閑進程數量的下限,pm.max_spare_servers是空閑進程數量的上限,pm.process_idle_timeout是空閑進程超時時間。
二、禁用函數
有時,我們需要禁用某些敏感或者危險的PHP函數,以增加PHP-FPM的安全性和可靠性。可以通過禁用這些函數來提高應用程序的健壯性。
PHP-FPM提供了禁用函數的機制。只需在配置文件中添加如下一句話即可:
```
disable_functions = phpinfo,exec,shell_exec,system,show_source,passthru,eval
```
上述配置就禁用了一系列的PHP函數,如phpinfo、exec、shell_exec等等。這樣一來,攻擊者就無法調用這些函數,從而提高了PHP-FPM的安全性。
三、訪問限制
如果你想訪問控制PHP-FPM,可以在配置文件中添加如下一句話:
```
listen.allowed_clients = 127.0.0.1
```
上述配置就限制了只有127.0.0.1的IP地址才能訪問PHP-FPM,其它IP地址都將被禁止。這是一種增加PHP-FPM安全性的有效方式。
四、共享內存
PHP-FPM可以使用共享內存模塊,以便于共享數據和資源。例如,可以在PHP中使用memcached模塊來實現共享緩存,加快響應速度。
為了配置共享內存模塊,可以在PHP的配置文件中添加如下一句話:
```
sysvshm.init_mem = 10000
```
上述配置將配置PHP-FPM共享內存段大小為10000KB。注意,在啟動PHP-FPM之前,必須加載sysvshm擴展。
總結:
PHP-FPM提供了強大的進程管理功能,可以為PHP提供高效、可靠的運行環境。通過對PHP-FPM的配置,可以實現一些高級功能,例如修改進程池的數量、禁用某些函數、訪問限制和共享內存等等。在選擇PHP-FPM作為PHP程序引擎時,必須詳細了解PHP-FPM的配置和應用,以便于更好地維護和管理PHP應用程序。
上一篇php fpm 重啟腳本
下一篇php fpm 錯誤