PHP Curl连接同服务器Electrum失败,基础授权无效求助
解决Electrum RPC连接被拒的问题
我来帮你捋捋这个Electrum连接的坑,你遇到的本地访问被拒情况,大概率是几个常见细节没做好,咱们一步步排查:
1. 先确认Electrum RPC服务真的开了
Electrum默认是关闭RPC服务的,你得手动启动的时候加上参数,或者在配置文件里设置。比如终端启动时:
electrum --server=127.0.0.1:7777:t --rpcuser=user --rpcpassword=pass --rpchost=127.0.0.1 --rpcport=7777
也可以去Electrum的配置文件(一般在~/.electrum/config)里确认rpcuser、rpcpassword、rpcport这些参数都配置正确,并且用ps aux | grep electrum看看进程有没有正常跑起来。
2. 修正终端curl命令的细节
你用的curl命令格式差一点,Electrum的RPC接口需要指定Content-Type,而且有些版本对id的格式有要求(得是整数),试试这个命令:
curl -H "Content-Type: application/json" --data-binary '{"id":1,"method":"addrequest","params":{"amount":"3.14","memo":"test"}}' http://user:pass@127.0.0.1:7777
如果还是不行,先换个更基础的RPC方法测试,比如getbalance,排除方法本身的问题:
curl -H "Content-Type: application/json" --data-binary '{"id":1,"method":"getbalance","params":[]}' http://user:pass@127.0.0.1:7777
3. PHP Curl的基础授权问题(先解决终端问题再试)
如果终端curl能通了PHP还是不行,那大概率是PHP Curl的配置或者写法问题:
- 先确认PHP开了curl扩展:
php -m | grep curl,没开的话去php.ini里开启 - 别依赖URL里的
user:pass做基础认证,手动构造Authorization头更可靠,示例代码:
$ch = curl_init('http://127.0.0.1:7777'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 手动设置基础认证头 curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'Authorization: Basic ' . base64_encode('user:pass') ]); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([ 'id' => 1, 'method' => 'addrequest', 'params' => ['amount' => '3.14', 'memo' => 'test'] ])); $response = curl_exec($ch); if(curl_errno($ch)) { echo 'Curl错误: ' . curl_error($ch); } curl_close($ch); var_dump($response);
4. 排查端口占用和防火墙
用lsof -i :7777或者netstat -tulpn | grep 7777看看7777端口是不是被其他程序占了;如果是Linux系统,临时关闭ufw/iptables试试,虽然本地回环访问一般不会被拦,但也有可能踩坑。
5. 版本兼容性问题
不同Electrum版本的RPC接口可能有差异,比如旧版本可能不支持addrequest方法,或者参数格式不同,先确认你用的Electrum版本文档里有没有这个方法。
内容的提问来源于stack exchange,提问作者seamus
相关产品推荐
相关产品推荐

