如何通过API、XML RPC或REST修改Plesk订阅过期日期?
嘿,我来帮你解决Plesk订阅过期日期修改的问题!结合你现有的创建订阅代码,下面我分两种常用的API方式给你详细说明:
一、使用XML-RPC修改订阅过期日期
你之前用的是XML格式的创建订阅请求,那用XML-RPC修改过期日期的逻辑和创建流程很像,只需要换个方法就行:
Plesk的XML-RPC接口中,修改订阅(webspace)的方法是webspace.update,核心是指定要修改的订阅标识(域名或ID),然后传入新的过期日期参数。
示例XML请求体
<packet> <webspace> <update> <filter> <name>{domainName}</name> <!-- 替换成你要修改的订阅域名 --> </filter> <gen_setup> <expiration_date>2025-12-31</expiration_date> <!-- 新的过期日期,格式必须是YYYY-MM-DD --> </gen_setup> </update> </webspace> </packet>
关键说明
- 如果你知道订阅的ID,也可以把
<filter>里的<name>换成<id>{webspace-id}</id>,这样定位更准确 - 如果要设置订阅永不过期,把
expiration_date的值设为0000-00-00就行 - 发送请求的端点和你创建订阅时一致,都是
https://<你的Plesk服务器IP>:8443/enterprise/control/agent.php,请求逻辑和创建订阅的代码复用即可,只是替换请求体和方法
二、使用REST API修改订阅过期日期
如果更倾向于REST风格的接口,Plesk也提供了对应的支持:
步骤1:获取访问令牌
先通过Plesk的API获取授权令牌,比如发送POST请求到https://<你的Plesk服务器IP>:8443/api/v2/auth/login,请求体为:
{ "username": "你的Plesk账号", "password": "你的Plesk密码" }
返回结果里的access_token就是后续请求要用的令牌。
步骤2:发送修改请求
发送PUT请求到https://<你的Plesk服务器IP>:8443/api/v2/webspaces/<webspace-id>,请求头需要带上:
Authorization: Bearer <你的access_token>Content-Type: application/json
请求体JSON格式如下:
{ "gen_setup": { "expiration_date": "2025-12-31" } }
关键说明
<webspace-id>可以通过GET请求https://<你的Plesk服务器IP>:8443/api/v2/webspaces获取,返回结果里会列出所有订阅,根据域名找到对应的ID- 设置永不过期的话,把
expiration_date设为null即可(部分旧版本可能支持"0000-00-00",建议优先测试null)
注意事项
- 不管用哪种方式,操作账号必须拥有足够的权限(比如管理员权限,或者该订阅的所有者权限)
- 日期格式一定要严格遵循
YYYY-MM-DD,否则会返回参数错误 - 如果是测试环境,建议先在单个订阅上测试修改,确认生效后再批量操作
内容的提问来源于stack exchange,提问作者mojtaba sabet
相关产品推荐
相关产品推荐

