首页主机资讯Ubuntu LNMP如何配置PHP版本

Ubuntu LNMP如何配置PHP版本

时间2025-12-10 18:39:04发布访客分类主机资讯浏览964
导读: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
    • 更新索引: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(推荐,隔离性好)
    1. 确认 FPM 监听套接字(示例为 8.17.4):
      • ls /run/php/php*.sock(常见为 php8.1-fpm.sockphp7.4-fpm.sock
    2. 编辑站点配置(如 /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 块;其余使用 .php8.1
    3. 检查并重载 Nginx:sudo nginx -t & & sudo systemctl reload nginx
    4. 重启对应 FPM:sudo systemctl restart php8.1-fpm php7.4-fpm
  • 方式 B 全局切换默认版本(影响所有未单独配置的站点)
    1. 停止旧版本并禁用开机启动,启动新版本并启用开机启动(示例从 7.4 切换到 8.1):
      • sudo systemctl stop php7.4-fpm & & sudo systemctl disable php7.4-fpm
      • sudo systemctl start php8.1-fpm & & sudo systemctl enable php8.1-fpm
    2. 将站点中的 fastcgi_pass 统一改为新版本套接字(如 unix:/run/php/php8.1-fpm.sock
    3. 检查并重载 Nginx:sudo nginx -t & & sudo systemctl reload nginx

三 验证与常见问题

  • 验证版本
    • CLI:php -v
    • Web:创建 /var/www/html/info.php,内容为 < ?php phpinfo(); ?> ,访问 http://your-domain/info.php 查看版本与 SAPI/FPM 信息;完成后删除该文件。
  • 常见问题
    • 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 -treload,避免语法错误导致中断服务。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu LNMP如何配置PHP版本
本文地址: https://pptw.com/jishu/768537.html
Debian清理方法:定期维护系统 Debian系统清理:如何避免磁盘空间不足

游客 回复需填写必要信息