宝塔怎么设置 PHP 多版本共存并针对不同网站指定版本

文章导读
宝塔面板支持多版本 PHP 共存,需在软件商店安装多个 PHP 版本并通过网站设置单独绑定。适用场景为同一服务器运行不同框架项目,风险边界在于切换版本后必须重载 Web 配置且确保对应 PHP-FPM 服务已启动,否则会出现 502 错误。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

宝塔面板支持多版本 PHP 共存,需在软件商店安装多个 PHP 版本并通过网站设置单独绑定。适用场景为同一服务器运行不同框架项目,风险边界在于切换版本后必须重载 Web 配置且确保对应 PHP-FPM 服务已启动,否则会出现 502 错误。

先说结论:宝塔面板允许多个 PHP 版本作为独立服务同时运行,通过网站管理界面即可为不同站点指定解释器,无需手动修改底层配置文件。

  • 适合:同一服务器需运行 PHP 7.4 老项目和 PHP 8.2 新项目的混合环境。
  • 先准备:在软件商店中安装目标 PHP 版本并确认服务状态为“正在运行”。
  • 验收:访问站点 phpinfo() 页面确认版本号,终端执行命令确认 CLI 版本独立。

命令速用版

若需快速检查当前环境或切换命令行版本,可使用以下操作:

1. 查看已安装 PHP 版本路径:ls /www/server/php/
2. 切换命令行默认版本:输入 bt 命令选择选项 16
3. 检查特定版本进程:ps aux | grep php-fpm-74

宝塔怎么设置 PHP 多版本共存并针对不同网站指定版本

为什么会这样

宝塔面板的多版本共存基于独立路径和进程隔离实现。每个 PHP 版本安装在/www/server/php/xx/目录下,拥有独立的 php.ini 配置文件和 php-fpm 进程,监听不同的 Socket 文件或端口,因此互不干扰。

分步处理

1. 安装多个 PHP 版本:登录面板,进入【软件商店】,搜索 PHP,点击所需版本(如 7.4、8.1)右侧的【安装】,等待状态变为“已安装”。
2. 为网站绑定版本:进入【网站】列表,点击目标站点【设置】,切换至【PHP 版本】选项卡,从下拉菜单选择已安装的版本,点击【保存】。
3. 重载配置与服务检查:保存后点击面板右上角【重载配置】,并在【软件商店】确认对应 PHP 版本的 PHP-FPM 服务已启动。

怎么验证是否生效

在网站根目录创建 index.php 文件,写入<?php phpinfo(); ?>,浏览器访问该站点查看 PHP Version 字段。若在终端执行命令,需使用绝对路径如/www/server/php/81/bin/php -v验证特定版本,因为系统默认 php 命令可能指向主版本。

宝塔怎么设置 PHP 多版本共存并针对不同网站指定版本

常见坑

1. 502 Bad Gateway:通常是因为站点绑定了 PHP 版本,但该版本的 php-fpm 服务未启动,或 Socket 文件权限错误。
2. 配置未生效:修改网站 PHP 版本后未点击【重载配置】,Nginx 仍使用旧规则转发请求。
3. 扩展不通用:不同 PHP 版本的扩展需单独安装,redis.so 不能从 7.4 直接复制到 8.1 目录。

常见问题

能否针对不同目录指定不同 PHP 版本?

面板界面不支持按目录切换,需手动编辑 Nginx 配置文件,在 location 块中指定不同的 fastcgi_pass socket 路径。

宝塔怎么设置 PHP 多版本共存并针对不同网站指定版本

命令行使用的 PHP 版本会自动随网站切换吗?

不会,Web 请求走 php-fpm,命令行走系统软链接,需使用 bt 命令选项 16 或绝对路径指定 CLI 版本。

切换版本后页面行为未变怎么办?

可能是 OPcache 缓存了旧版本字节码,需在 PHP 管理界面找到对应版本点击【清除 OPcache 缓存】或重启服务。

参考来源

宝塔面板如何配置多版本 PHP 共存_针对不同站点指定环境
如何在宝塔面板配置多版本 PHP 共存_针对不同目录指定 PHP 解释器
宝塔面板如何配置多 PHP 版本共存并互不干扰?宝塔面板底层容器化思路
如何在宝塔面板中安装多个版本的 PHP? 实现宝塔面板多版本 PHP 并存