Ubuntu LNMP 配置 PHP 版本
一 安装多个 PHP 版本
sudo apt-get install -y software-properties-common apt-transport-https lsb-release ca-certificates wgetwget -qO - https://packages.sury.org/php/apt.gpg.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/php-archive-keyring.gpg >/dev/nullecho "deb [signed-by=/usr/share/keyrings/php-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list >/dev/nullecho "deb [signed-by=/usr/share/keyrings/php-archive-keyring.gpg] https://packages.sury.org/php/ bionic main" | sudo tee /etc/apt/sources.list.d/php.list >/dev/nullsudo apt-get updatesudo apt-get install -y php8.1 php8.1-fpm php8.1-mysql php8.1-curl php8.1-xml php8.1-gd php8.1-mbstring二 为站点切换 PHP 版本
ls /run/php/php*.sock(常见为 php8.1-fpm.sock、php7.4-fpm.sock)# PHP 8.1
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# PHP 7.4
location ~ \.php7\.4$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
sudo nginx -t && sudo systemctl reload nginxsudo systemctl restart php8.1-fpm php7.4-fpmsudo systemctl stop php7.4-fpm && sudo systemctl disable php7.4-fpmsudo systemctl start php8.1-fpm && sudo systemctl enable php8.1-fpmfastcgi_pass 统一改为新版本套接字(如 unix:/run/php/php8.1-fpm.sock)sudo nginx -t && sudo systemctl reload nginx三 验证与常见问题
php -v<?php phpinfo(); ?>,访问 http://your-domain/info.php 查看版本与 SAPI/FPM 信息;完成后删除该文件。sudo systemctl status php{version}-fpm 查看日志,确认 Nginx 中 fastcgi_pass 与 FPM 的 listen 一致(socket 或 127.0.0.1:9000/9001)。sudo apt-get install -y php8.1-redis php7.4-redis;安装后重启对应 php{version}-fpm。fastcgi_pass 127.0.0.1:900x;。sudo nginx -t 再 reload,避免语法错误导致中断服务。