Bitcoind

jsonRPCClient.php 聲明其提供了 401 錯誤響應

  • November 29, 2019

當我從命令行執行我的 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 文件顯示為空白。我在啟動 bitcoind 時使用了 -txindex 參數。

但我可以使用 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

另請注意,我替換了使用者名和密碼來隱藏它們。

我的問題是為什麼我可以使用 bitcoin-cli 並且沒有錯誤,但是當我嘗試使用 jsonRPCClient.php 時出現錯誤 401 Authorization Required 以及如何修復該錯誤?

我認為這與這個未解決的問題有關。

<https://github.com/bitcoin/bitcoin/issues/9661>

我在 Ubuntu 16 上執行 bitcoind。

我在配置文件中rpcuser遇到了類似的問題。rpcpassword當我呼叫 jaon-rpc api 時,我得到的只是 401 錯誤。

-rpcuser=REPLACED -rpcpassword=REPLACED在啟動 bitcoind 時提供了一個解決方法。

希望這是有用的。

還有一件事,而不是從 PHP 中的 rpc 客戶端進行調試。也許curl先試試。HTTP 401 顯然是一個身份驗證問題,使用curl起來更容易調試。

請確保您的 RPC 使用者名和密碼正確,同時確保您的使用者名和密碼不包含 (#) 標記。

引用自:https://bitcoin.stackexchange.com/questions/36969