宝塔网站切换PHP版本与安装扩展
宝塔允许服务器同时安装多个PHP版本,但“安装了PHP 8.x”不等于所有网站已经使用它。本文分开处理站点运行版本、该版本扩展以及命令行PHP。前置站点创建步骤见宝塔面板创建网站与数据库教程。已有正式业务先在测试副本验证程序、主题和插件兼容性,不能直接跨大版本切换。
先记录当前版本与回退条件
- 记录目标域名、当前PHP分支、需要的扩展、配置参数及计划任务使用的PHP路径。
- 从程序官方说明核对支持的PHP分支;新环境不选已停止安全维护的旧版本来迁就过期安装包。
- 确认有可恢复的代码与数据副本,安排维护时间;切换运行时不等于升级程序本身。
- 保留原PHP版本及配置,先不卸载,便于在兼容失败时切回。
安装目标PHP,再为站点选择它
- 在“软件商店→运行环境”找到PHP,选择程序支持的目标分支及安装方式,等待任务明确完成。
- 到“已安装”列表打开该PHP的设置,核对其服务状态和当前版本;不同分支各自管理扩展与配置。
- 进入“网站→目标站点”,打开站点设置中的“PHP”,选择已安装的目标版本;如界面出现“切换”按钮,核对目标版本后点击。等待面板给出操作结果,重新打开该设置核对当前值,再按后文验证Web实际版本。
- 不要选择“纯静态”来处理PHP报错。纯静态意味着不通过PHP执行,含源代码和凭据的文件不能这样对外发布。
给正确的PHP分支安装扩展
程序报告缺少mysqli、curl、mbstring、gd、zip等时,在软件商店打开“当前站点所选PHP版本”的设置,进入安装扩展界面,按程序实际要求逐项安装。安装到另一个并未被站点使用的PHP版本不会解决问题。查看任务结果及服务状态,必要时按面板提供的服务管理入口重载该PHP,不同时重启全部环境。
不要因为旧程序调用已经移除的mysql_*函数,就把安装mysqli当成代码无需修改的保证。不同扩展API和不同PHP大版本可能有兼容变更,应修正程序或采用经过验证的支持分支。来源不明的二进制扩展和“万能修复脚本”不进入正式环境。
网站与命令行分别验证
Web端通过程序的站点健康或受限的临时检测文件确认PHP版本与所需扩展;检测结束移除文件,不长期公开phpinfo。命令行使用php -v只能说明默认CLI版本。站点切换通常不会自动修改所有cron、队列或脚本的PHP路径,定时任务应显式使用所需分支的实际可执行文件。
| 检查项 | 通过标准 |
|---|---|
| 前台与后台 | 首页和管理入口正常,无500或源码下载;登录在有效HTTPS下完成。 |
| 业务功能 | 表单、上传、数据库、邮件或队列等实际依赖可用,不能只看首页。 |
| 扩展与参数 | Web端实际加载所需扩展,上传/内存等参数来自当前分支。 |
| 计划任务 | 以预期PHP分支运行,退出状态与日志正常,无连续报错。 |
切换后报错的回退顺序
先保存完整错误和时间,在站点PHP设置切回原分支,核对原扩展和配置仍可用,再复测业务。如果在切换期间程序还执行了数据库结构升级,仅切回PHP可能不够,需要按程序支持的恢复方案处理,不能盲目覆盖新数据。排查期间不要卸载原PHP,也不要顺手把系统默认CLI改成另一版本影响其他站点。