Когда я запускаю свой php-файл из командной строки, я получаю следующее:
<pre>
PHP Warning: fopen(http://...@127.0.0.1:8332/): failed to open stream: HTTP request failed! HTTP/1.0 401 Authorization Required
in /home/brian/Desktop/VH2_apache2/host02/btc16/jsonRPCClient.php on line 132
PHP Fatal error: Uncaught exception 'Exception' with message 'Unable to connect to http://b:a@127.0.0.1:8332/' in /home/brian/Desktop/VH2_apache2/host02/btc16/jsonRPCClient.php:140
Stack trace:
#0 /home/brian/Desktop/VH2_apache2/host02/btc16/index1.php(12): jsonRPCClient->__call('getinfo', Array)
#1 /home/brian/Desktop/VH2_apache2/host02/btc16/index1.php(12): jsonRPCClient->getinfo()
#2 {main}
thrown in /home/brian/Desktop/VH2_apache2/host02/btc16/jsonRPCClient.php on line 140
Мой файл php выглядит так:
<?php
require_once 'jsonRPCClient.php';
$bitcoin = new jsonRPCClient('http://user:password@127.0.0.1:8332/',true);
#$param = array(
#'c418518d5ffccd947e377ab7e589f684d83e6df1af8f397cc11848ac8a78f0dd',
#'1');
#$return1 = $bitcoin->getrawtransaction('c418518d5ffccd947e377ab7e589f684d83e6df1af8f397cc11848ac8a78f0dd','1')
echo "<pre>\n";
print_r($bitcoin->getinfo()); echo "\n";
#print_r($return1['0']); echo "\n";
#echo "Received: ".$bitcoin->getreceivedbylabel("Your Address")."\n";
echo "</pre>";
?>
Моя веб-страница с apache2 выглядит пустой и использует созданный мной php-файл. Я использую параметр -txindex при запуске bitcoind.
Но я могу использовать bitcoin-cli для взаимодействия с bitcoind.
Iv'e used:
bitcoin-cli getrawtransaction c418518d5ffccd947e377ab7e589f684d83e6df1af8f397cc11848ac8a78f0dd 1
and:
bitcoin-cli getinfo
Также мой bitcoin.conf выглядит так:
rpcuser=user
rpcpassword=pass
txindex=1
server=1
Также обратите внимание, что я заменил имена пользователей и пароли, чтобы скрыть их.
Мой вопрос: почему я могу использовать биткойн-кли и не получить ошибку, но когда я пытаюсь использовать jsonRPCClient.php, я получаю сообщение об ошибке 401 Требуется авторизация и как мне исправить ошибку?
Я думаю, что это связано с этим открытым вопросом.
https://github.com/bitcoin/bitcoin/issues/9661
Я запускал биткойн на Ubuntu 16.
У меня была аналогичная проблема, когда у меня была rpcuser
и rpcpassword
в файле конфигурации. Все, что я получил, это ошибка 401, когда я вызвал API jaon-rpc.
Я нашел обходной путь, -rpcuser=REPLACED -rpcpassword=REPLACED
указав при запуске файла bitcoind.
Надеюсь, это полезно.
Еще одна вещь, вместо отладки вашего rpc-клиента в PHP. curl
Может быть, сначала попробовать . HTTP 401 явно является проблемой аутентификации, использование curl
которой намного проще для отладки.
Убедитесь, что ваше имя пользователя и пароль RPC верны, а также убедитесь, что ваше имя пользователя и пароль не содержат тега (#).
Обязательно проверьте, какой bitcoin.conf
файл конфигурации использует bitcoind
демон. Это явно показано при начальной загрузке.
Это может произойти, если вы измените путь установки биткойн-ядра по умолчанию при установке.
Таким образом, вам не нужно будет передавать user/pwd через cli при запуске службы.
Ник Оделл
pass
в вашем файле конфигурации, и он находитсяpassword
в вашем файле конфигурации. Отражает ли это содержимое ваших файлов config/php?Гемон Хербайл
Ник Оделл
морсекодер
Гемон Хербайл
Гемон Хербайл