Ubuntu LNMP如何配置PHP版本
导读:Ubuntu LNMP 配置 PHP 版本 一 安装多个 PHP 版本 更新索引并添加 Ondřej Surý 的 PHP APT 仓库(适用于 Ubuntu 18.04/20.04/22.04): 安装工具:sudo apt-get...
Ubuntu LNMP 配置 PHP 版本
一 安装多个 PHP 版本
- 更新索引并添加 Ondřej Surý 的 PHP APT 仓库(适用于 Ubuntu 18.04/20.04/22.04):
- 安装工具:
sudo apt-get install -y software-properties-common apt-transport-https lsb-release ca-certificates wget - 导入 GPG:
wget -qO - https://packages.sury.org/php/apt.gpg.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/php-archive-keyring.gpg > /dev/null - 添加源(将 {
php_version}
替换为所需版本,如 8.1/8.2/8.3):
- Ubuntu 20.04/22.04/24.04:
echo "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/null - Ubuntu 18.04:
echo "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/null
- Ubuntu 20.04/22.04/24.04:
- 更新索引:
sudo apt-get update
- 安装工具:
- 安装所需版本与扩展(示例为 PHP 8.1 与常用扩展):
sudo 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 7.4/8.2/8.3,将版本号替换为对应数字后执行相同命令。
二 为站点切换 PHP 版本
- 方式 A 按站点使用不同 FPM Socket(推荐,隔离性好)
- 确认 FPM 监听套接字(示例为 8.1 与 7.4):
ls /run/php/php*.sock(常见为 php8.1-fpm.sock、php7.4-fpm.sock)
- 编辑站点配置(如 /etc/nginx/sites-available/your_domain.conf),为不同版本分别设置 location:
# 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; }- 将需要 PHP 7.4 的站点使用 .php7.4 后缀或单独 server 块;其余使用 .php 走 8.1。
- 检查并重载 Nginx:
sudo nginx -t & & sudo systemctl reload nginx - 重启对应 FPM:
sudo systemctl restart php8.1-fpm php7.4-fpm
- 确认 FPM 监听套接字(示例为 8.1 与 7.4):
- 方式 B 全局切换默认版本(影响所有未单独配置的站点)
- 停止旧版本并禁用开机启动,启动新版本并启用开机启动(示例从 7.4 切换到 8.1):
sudo systemctl stop php7.4-fpm & & sudo systemctl disable php7.4-fpmsudo systemctl start php8.1-fpm & & sudo systemctl enable php8.1-fpm
- 将站点中的
fastcgi_pass统一改为新版本套接字(如 unix:/run/php/php8.1-fpm.sock) - 检查并重载 Nginx:
sudo nginx -t & & sudo systemctl reload nginx
- 停止旧版本并禁用开机启动,启动新版本并启用开机启动(示例从 7.4 切换到 8.1):
三 验证与常见问题
- 验证版本
- CLI:
php -v - Web:创建 /var/www/html/info.php,内容为
< ?php phpinfo(); ?>,访问http://your-domain/info.php查看版本与 SAPI/FPM 信息;完成后删除该文件。
- CLI:
- 常见问题
- 502 Bad Gateway:多为 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。 - 端口冲突:若使用 TCP 方式,确保不同版本监听不同端口(如 9000/9001),并在 Nginx 中对应修改
fastcgi_pass 127.0.0.1:900x;。 - 配置语法:每次修改 Nginx 后先执行
sudo nginx -t再reload,避免语法错误导致中断服务。
- 502 Bad Gateway:多为 FPM 未启动或套接字路径不一致。执行
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu LNMP如何配置PHP版本
本文地址: https://pptw.com/jishu/768537.html
