jsonRPCClient.php gibt an, dass eine 401-Fehlerantwort geliefert wurde

Wenn ich meine PHP-Datei über die Befehlszeile ausführe, erhalte ich Folgendes:

<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

Meine php-Datei sieht so aus:

<?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>";
?>

Meine Webseite mit Apache2 erscheint leer und verwendet die von mir erstellte PHP-Datei. Ich verwende den Parameter -txindex, wenn ich Bitcoin starte.

Aber ich kann bitcoin-cli verwenden, um mit bitcoind zu interagieren

Iv'e used:
bitcoin-cli getrawtransaction c418518d5ffccd947e377ab7e589f684d83e6df1af8f397cc11848ac8a78f0dd 1

and:
bitcoin-cli getinfo

Auch meine bitcoin.conf sieht so aus:

rpcuser=user
rpcpassword=pass
txindex=1
server=1

Beachten Sie auch, dass ich die Benutzernamen und Passwörter ersetzt habe, um sie zu verbergen.

Meine Frage ist, warum ich bitcoin-cli verwenden kann und keinen Fehler bekomme, aber wenn ich versuche, jsonRPCClient.php zu verwenden, erhalte ich den Fehler 401 Autorisierung erforderlich und wie behebe ich den Fehler?

Fehler 401 bedeutet ungültiger Benutzer/Passwort. Ich bemerke, dass das Passwort passin Ihrer Konfigurationsdatei ist, und es ist passwordin Ihrer Konfigurationsdatei. Spiegelt das den Inhalt Ihrer config/php-Dateien wider?
Nein, entschuldigen Sie die Verwirrung, ich habe mein Passwort und meinen Benutzernamen, die in diesem Forum aufgeführt sind, ersetzt, um die Sicherheit des Bitcoin-Kerns auf meinem Computer zu gewährleisten. Das Passwort und der Benutzername, die ich auf meinem Computer verwendet habe, stimmen mit denen in der Konfigurationsdatei überein und ich habe viele Male nachgesehen.
Ich weiß nicht, was ich dir sagen soll. Ungültiger Benutzer/Durchgang löst den Fehler aus.
Haben Sie Ihren Client neu gestartet, seit Sie den Benutzernamen und das Passwort in die conf-Datei eingegeben haben?
Ich denke schon, ich habe mein PHP-Skript und Bitcoin auch neu gestartet, und das Seltsame ist, dass es an einem Punkt funktioniert hat.
Ich habe jetzt entdeckt, dass es teilweise dadurch verursacht wurde, dass der Armory Bitcoin Wallet Manager tagelang geöffnet war.

Antworten (3)

Ich denke, das hängt mit diesem offenen Problem zusammen.

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

Ich habe Bitcoin auf Ubuntu 16 ausgeführt.

Ich hatte das ähnliche Problem, als ich rpcuserund rpcpasswordin der Konfigurationsdatei hatte. Alles, was ich bekam, war ein 401-Fehler, als ich die jaon-rpc-API anrief.

Ich habe eine Problemumgehung gefunden, indem ich bereitgestellt habe, -rpcuser=REPLACED -rpcpassword=REPLACEDals ich die Bitcoin gestartet habe.

Hoffe, das ist nützlich.

Eine weitere Sache, anstatt von Ihrem RPC-Client in PHP zu debuggen. Probiere es vielleicht curlerstmal mit. HTTP 401 ist eindeutig ein Authentifizierungsproblem, die Verwendung curlist viel einfacher für das Debuggen.

Bitte vergewissern Sie sich, dass Ihr RPC-Benutzername und Ihr Passwort korrekt sind, und vergewissern Sie sich auch, dass Ihr Benutzername und Ihr Passwort kein (#)-Tag enthalten.

Stellen Sie sicher, dass Sie überprüfen, welche bitcoin.confKonfigurationsdatei der bitcoindDaemon verwendet. Es wird explizit beim Bootstrapping angezeigt.

Dies würde auftreten, wenn Sie den standardmäßigen Bitcoin-Core-Installationspfad beim Setup ändern.

Auf diese Weise müssen Sie den Benutzer/pwd nicht über CLI beim Dienststart übergeben.