jsonRPCClient.php afirma que ha recibido una respuesta de error 401

Cuando ejecuto mi archivo php desde la línea de comando, obtengo esto:

<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

Mi archivo php se ve así:

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

Mi página web con apache2 aparece en blanco y usa el archivo php que hice. Estoy usando el parámetro -txindex cuando ejecuto bitcoind.

Pero puedo usar bitcoin-cli para interactuar con bitcoind

Iv'e used:
bitcoin-cli getrawtransaction c418518d5ffccd947e377ab7e589f684d83e6df1af8f397cc11848ac8a78f0dd 1

and:
bitcoin-cli getinfo

También mi bitcoin.conf se ve así:

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

También tenga en cuenta que sustituí los nombres de usuario y contraseñas para ocultarlos.

Mi pregunta es por qué puedo usar bitcoin-cli y no obtengo ningún error, pero cuando intento usar jsonRPCClient.php aparece el error 401 Se requiere autorización y ¿cómo soluciono el error?

El error 401 significa usuario/contraseña incorrectos. Noté que la contraseña está passen su archivo de configuración y está passworden su archivo de configuración. ¿Eso refleja el contenido de sus archivos config/php?
No, disculpe la confusión, reemplacé mi contraseña y nombre de usuario que figuran en este foro para mantener la seguridad del núcleo de bitcoin en mi computadora. La contraseña y el nombre de usuario que usé en mi computadora coinciden con los del archivo de configuración y lo he verificado muchas veces.
no se que decirte El usuario/pase incorrecto es lo que desencadena el error.
¿Ha reiniciado su cliente desde que puso el nombre de usuario y la contraseña en el archivo conf?
Creo que sí, reinicié mi script php y bitcoind también, y lo extraño es que funcionó en un punto.
Ahora descubrí que es parcialmente causado por dejar abierto el administrador de la billetera bitcoin armería durante días.

Respuestas (3)

Creo que esto está relacionado con este tema abierto.

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

Estaba ejecutando bitcoind en Ubuntu 16.

Tuve un problema similar cuando tenía rpcusery rpcpassworden el archivo de configuración. Todo lo que obtuve es un error 401 cuando llamé a la API de jaon-rpc.

Encontré una solución proporcionando -rpcuser=REPLACED -rpcpassword=REPLACEDcuando lancé el archivo bitcoind.

Espero que esto sea útil.

Una cosa más, en lugar de depurar desde su cliente rpc en PHP. Tal vez intente con curlprimero. HTTP 401 claramente es un problema de autenticación, el uso curles mucho más fácil para la depuración.

Asegúrese de que su nombre de usuario y contraseña de RPC sean correctos, también asegúrese de que su nombre de usuario y contraseña no contengan la etiqueta (#).

Asegúrese de verificar qué bitcoin.confarchivo de configuración bitcoindestá usando el daemon. Se muestra explícitamente en el arranque.

Esto surgiría si cambia la ruta de instalación predeterminada de bitcoin-core en la configuración.

De esta manera, no necesitará pasar el usuario/contraseña a través del inicio del servicio cli on.