同一台伺服器需支援不同專案使用不同 PHP 版本(如 PHP 5.6 與 PHP 7.4),最簡單做法是讓各版本 PHP-FPM 監聽不同埠,Nginx fastcgi_pass 對應導向。
# 編輯 php-fpm.conf(或 www.conf 池設定)
# 找到 listen 指令
listen = 127.0.0.1:9000 # 預設
# 修改為不同埠,例:
# PHP 5.6 → 9000
# PHP 7.4 → 9001
# PHP 8.1 → 9002
修改後重啟對應的 php-fpm 服務。
# 專案 A 使用 PHP 5.6
server {
listen 80;
server_name project-a.local;
root /var/www/project-a;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; # 對應 PHP 5.6
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
# 專案 B 使用 PHP 7.4
server {
listen 80;
server_name project-b.local;
root /var/www/project-b;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9001; # 對應 PHP 7.4
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
netstat -tlnp | grep php-fpmnginx -tnginx -s reloadphpinfo() 頁面確認 PHP 版本listen = /var/run/php5.6-fpm.sock,效能略優於 TCP,但需注意權限端口區隔法配置最快、改動最小,適合輕量級多版本共存需求;長期專案建議朝容器化遷移。