在Linux系統中,PHP-FPM(FastCGI Process Manager)與Apache的切換主要涉及處理PHP請求的方式變更:從Apache內置的mod_php
模塊切換到PHP-FPM(推薦,提升性能與安全性),或從PHP-FPM切回mod_php
。以下是詳細操作流程:
確保系統已安裝以下組件:
sudo apt install apache2
,CentOS使用sudo yum install httpd
);sudo apt install php-fpm
,CentOS使用sudo yum install php-fpm
);php-cli
、php-mysql
等(根據需求安裝)。mod_php
是Apache內置的PHP處理模塊,切換到PHP-FPM需禁用mod_php
并配置Apache通過FastCGI與PHP-FPM通信。
mod_php
會隨Apache啟動加載,需先禁用:
sudo a2dismod php7.x # 將7.x替換為你的PHP版本(如php7.4、php8.1)
PHP-FPM通過FastCGI協議通信,需啟用proxy_fcgi
和setenvif
模塊:
sudo a2enmod proxy_fcgi setenvif
修改Apache的虛擬主機配置文件(通常位于/etc/apache2/sites-available/000-default.conf
或/etc/httpd/conf.d/your_site.conf
),添加以下內容以將PHP請求轉發給PHP-FPM:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.x-fpm.sock|fcgi://localhost"
</FilesMatch>
127.0.0.1:9000
,需修改PHP-FPM配置):<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
編輯PHP-FPM的池配置文件(通常位于/etc/php/7.x/fpm/pool.d/www.conf
),確保listen
指令與Apache配置一致:
listen = /run/php/php7.x-fpm.sock
listen.owner = www-data # Apache運行用戶(Ubuntu默認www-data,CentOS默認apache)
listen.group = www-data
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
sudo systemctl restart apache2 # Ubuntu
# 或
sudo systemctl restart httpd # CentOS
sudo systemctl restart php7.x-fpm # 重啟PHP-FPM
若需切換回mod_php
(Apache內置處理PHP),需反向操作上述步驟。
<FilesMatch \.php$>
塊(即SetHandler
指令);proxy_fcgi
和setenvif
模塊:sudo a2dismod proxy_fcgi setenvif
sudo a2enmod php7.x # 將7.x替換為你的PHP版本
編輯PHP-FPM的池配置文件(/etc/php/7.x/fpm/pool.d/www.conf
),將listen
指令注釋或修改為無效值(如listen = /run/php/php7.x-fpm.sock.disabled
),并重啟PHP-FPM:
sudo systemctl restart php7.x-fpm
sudo systemctl restart apache2 # Ubuntu
# 或
sudo systemctl restart httpd # CentOS
無論切換至哪種方式,均需通過以下步驟驗證:
/var/www/html
)創建測試文件info.php
,內容為:<?php phpinfo(); ?>
http://your_server_ip/info.php
,查看“Server API”字段:
mod_php
成功。www-data
/apache
)對PHP-FPM的listen
路徑(如Socket文件或日志目錄)有讀寫權限;sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.bak
);9000
端口未被其他服務占用(可通過sudo netstat -tulnp | grep 9000
檢查)。通過以上步驟,即可在Linux環境下實現PHP-FPM與Apache的靈活切換。