You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP Curl控制Linux服务器Electrum钱包遇问题求助

PHP调用Electrum RPC接口失败的修复方案

嘿,我来帮你搞定这个Electrum RPC调用的问题!看了你贴的PHP代码,能发现几个明显的小问题,咱们一步步修正过来:

1. 认证方式的问题

你直接把带特殊字符(==)的密码放在URL里,这会导致URL解析错误——特殊字符需要编码才能正确传递。更稳妥的做法是用Curl的CURLOPT_USERPWD选项单独设置用户名和密码,避免URL编码的麻烦。

2. JSON请求体不完整

你的POST字段里的JSON没写完,Electrum的RPC要求严格的JSON格式:必须包含id、method和params三个字段,而且JSON语法要完全闭合。

修正后的完整代码

下面是调整后的可运行代码,我加了详细注释:

<?php
// 初始化Curl会话
$ch = curl_init();

// 定义RPC服务器地址(不要把认证信息放在URL里)
$rpcUrl = "http://serverip:7777";

// 设置RPC认证信息:用户名+密码
$rpcUser = "myusername";
$rpcPass = "mypassword==";
curl_setopt($ch, CURLOPT_USERPWD, "$rpcUser:$rpcPass");

// 目标URL
curl_setopt($ch, CURLOPT_URL, $rpcUrl);

// 让Curl返回结果而不是直接输出到页面
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// 启用POST请求
curl_setopt($ch, CURLOPT_POST, true);

// 构造符合要求的RPC请求JSON
// 以getbalance为例,这个方法不需要参数,所以params是空数组
$requestData = json_encode([
    "id"    => "curltext",
    "method"=> "getbalance",
    "params"=> []
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestData);

// 设置请求头,告诉服务器我们发送的是JSON格式
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/json",
    "Content-Length: " . strlen($requestData)
]);

// 执行请求并获取响应
$response = curl_exec($ch);

// 检查Curl执行过程中是否出错
if (curl_errno($ch)) {
    echo "Curl执行错误: " . curl_error($ch);
} else {
    // 解析JSON响应
    $result = json_decode($response, true);
    if ($result !== null) {
        // 打印返回结果
        print_r($result);
    } else {
        echo "JSON解析失败,原始响应内容: " . $response;
    }
}

// 关闭Curl会话
curl_close($ch);
?>

额外排查要点

除了代码本身,还要确认这些配置是否正确:

  • Electrum RPC服务是否开启:启动Electrum时必须加上RPC相关参数,比如:
    electrum --server --rpcuser=myusername --rpcpassword=mypassword== --rpchost=0.0.0.0 --rpcport=7777
    
    这里--rpchost=0.0.0.0允许外部机器访问RPC服务,如果PHP和Electrum在同一服务器,也可以用127.0.0.1。
  • 端口是否开放:检查服务器防火墙是否允许7777端口的入站请求,确保PHP所在机器能ping通并访问这个端口。
  • 先在命令行测试:用Curl命令行先验证RPC是否可用,比如:
    curl --user myusername:mypassword== -X POST -H "Content-Type: application/json" -d '{"id":"test","method":"getbalance","params":[]}' http://serverip:7777
    
    如果命令行能拿到正确响应,再回到PHP代码排查问题。

内容的提问来源于stack exchange,提问作者seamus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:00:17