Я пытаюсь сделать json-вызов на VPS-сервер, на котором размещен мой кошелек, и он не работает со следующим сообщением об ошибке:
Warning: fopen(http://user:pass@ip:port): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in C:\Users\Owner\Desktop\USBWebServer\root\php\jsonRPCClient.php on line 132
Fatal error: Uncaught exception 'Exception' with message 'Unable to connect to http://user:pass@ip:port' in C:\Users\Owner\Desktop\USBWebServer\root\php\jsonRPCClient.php:140
Stack trace:
#0 C:\Users\Owner\Desktop\USBWebServer\root\php\testrpc.php(15): jsonRPCClient- >__call('getinfo', Array)
#1 C:\Users\Owner\Desktop\USBWebServer\root\php\testrpc.php(15): jsonRPCClient- >getinfo()
#2 C:\Users\Owner\Desktop\USBWebServer\root\index.php(154): include('C:\Users\Owner\...')
#3 {main}
thrown in C:\Users\Owner\Desktop\USBWebServer\root\php\jsonRPCClient.php on line 140
я получил свой файл JsonRPCClinet.php отсюда http://jsonrpcphp.org/code.php?file=jsonRPCClient
мой файл bitcoin.conf выглядит следующим образом:
server=1
daemon=1
listen=1
rpcuser=user
rpcpassword=pass
rpctimeout=16
rpcallowip=0.0.0.0
rpcport=8332
я знаю, что 0.0.0.0 опасен, я изменю его, как только все заработает
я вызываю json-rpc, используя этот php-код
<?php
require_once 'jsonRPCClient.php';
/* Configuration variables for the JSON-RPC server */
$rpc_host = 'ip';
$rpc_port = '8332';
$rpc_user = 'user';
$rpc_pass = 'pass';
$btc = new jsonRPCClient('http://' . $rpc_user . ':' . $rpc_pass . '@' . $rpc_host . ':' . $rpc_port);
echo "<pre>\n";
print_r($btc->getinfo()); echo "\n";
echo "Received: ".$btc->getreceivedbylabel("BEkpbpYLpwacchSQFRCL7ZSWw3VwB8k7WN")."\n";
echo "</pre>";
?>
дополнительно я открыл порт 8332 на своем VPS
может ли кто-нибудь увидеть причину возникновения этой ошибки, я был бы очень признателен за помощь
Я только что прочитал код, который обрабатывает rpcallowip , и могу сказать, что rpcallowip=0.0.0.0
это не сработает.
Если вы хотите разрешить со всех адресов, вы должны использовать
rpcallowip=0.0.0.0/0
(Как ни странно, я не могу найти код , который обрабатывает подстановочные знаки. Я собираюсь открыть проблему на github по этому поводу. Похоже, что либо документация, либо код неверны.)
Редактировать: оказывается, что поддержка подстановочных знаков была удалена.
$btc->debug = true
в своей программе; посмотрите, не появится ли что-нибудь просветляющее.new jsonRPCClient("http://...", true)
пользователь11221
rpcallowip=*
вместо0.0.0.0
.Ник Оделл
Ник Оделл
пользователь11221
bitcoind
, это может быть прокси или даже брандмауэр, возвращающий это403
, если пакеты отфильтрованы.