Bitcoind
jsonRPCClient.php 聲明其提供了 401 錯誤響應
當我從命令行執行我的 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 使用者名和密碼正確,同時確保您的使用者名和密碼不包含 (#) 標記。