宝塔面板支持通过API批量更新上百个网站的PHP版本:先启用API并获取密钥,再获取站点列表及当前PHP版本ID,接着查询目标PHP的version_id,然后调用/set_php_version接口逐个修改,最后验证结果并处理异常。

如果您需要在宝塔面板中批量将上百个网站的PHP版本统一更新,手动逐个操作效率极低,而宝塔官方提供了开放的API接口,支持通过HTTP请求实现自动化配置变更。以下是利用API接口完成该任务的具体步骤:
一、启用并获取API密钥
宝塔面板默认关闭API服务,需先在面板后台开启并生成有效密钥,确保后续请求具备合法身份与操作权限。
1、登录宝塔面板,在左侧菜单栏点击“设置” → “面板设置”。
2、向下滚动至“API接口”区域,勾选“启用API接口”并点击“保存”。
立即学习“PHP免费学习笔记(深入)”;
3、点击“创建API密钥”按钮,填写描述(如“批量改PHP”),点击确认后复制生成的key值与URL地址(形如https://127.0.0.1:8888/api?secret_key=xxx)。
二、获取目标网站列表及当前PHP版本信息
需先调用站点查询接口,获取所有网站域名及其绑定的PHP版本ID,为后续批量修改提供数据基础与校验依据。
1、构造GET请求:/site/get_sites,附加API密钥参数(如?secret_key=xxx)。
2、发送请求后解析返回的JSON数据,提取每个站点的id、name(域名)、php_version字段。
3、筛选出需修改的站点ID列表,并记录其当前PHP版本(如“74”、“80”、“82”),用于对比变更结果。
三、查询目标PHP版本ID
宝塔API不直接接受PHP版本号字符串(如“8.2”)作为参数,而是使用内部整型ID(如82对应PHP 8.2),需预先查表或调用接口获取准确映射关系。
1、调用接口:/php/get_php_versions,获取面板已安装的所有PHP版本详情。
2、遍历返回结果,定位目标版本(如PHP 8.2)对应的version_id字段值(通常为82、83等整数)。
3、确认该version_id存在于面板中且状态为“已安装”,否则后续修改将失败。
四、批量调用站点PHP切换接口
使用/site/set_php_version接口对每个目标站点发起独立POST请求,传入站点ID与目标PHP version_id,实现版本强制覆盖。
1、准备请求体(JSON格式),包含字段:"id": 站点ID, "version": 目标version_id, "type": "0"(type=0表示网站主程序,非子目录)。
2、对每个站点ID循环发送POST请求至/site/set_php_version,URL携带secret_key参数。
3、检查每次响应中的"status": true字段,确认修改成功;若返回false,记录该站点ID与error_msg供排查。
五、验证修改结果并处理异常
接口调用完成后,必须回查各站点实际生效版本,避免因网络中断、权限不足或ID错误导致部分站点未更新。
1、再次调用/site/get_sites,获取最新站点列表。
2、比对每个目标站点的php_version字段是否已更新为预期值(如由“74”变为“82”)。
3、对未变更成功的站点,检查其运行状态是否为“正在运行”,若为停止状态需先启动再重试修改。











