Вызов JSON RPC с веб-страницы в Bitcoin Core

Я хочу выполнять вызовы API к моему кошельку Bitcoin Core со своей веб-страницы, но когда я пытаюсь подключиться, у меня возникает внутренняя ошибка сервера.

Я использую easybitcoin.php JSON из Github .

Я пытаюсь использовать этот вызов JSON RPC:

require_once('easybitcoin.php');
    $bitcoin = new Bitcoin('myusername','mypassword','myip','8332');
    $bitcoin->getinfo();

В моем файле bitcoin.conf есть:

  • слушать=1
  • максконнектов=15
  • сервер=1
  • демон=1
  • rpcuser=моеимя пользователя
  • rpcpassword=мой пароль
  • rpclienttimeout=60
  • рппорт = 8332
  • rpcallowip=0.0.0.0/0 (до того, как я указал здесь свой IP-адрес, но это тоже не помогло)

Когда я использую клиент bitcoin-cli.exe для отправки команд на мой сервер Bitcoin Core через 127.0.0.1 (localhost), он работает отлично.

Что я делаю неправильно?

Вы не против вставить сообщение об ошибке?
Что бы это ни стоило, ваш код отлично работает для меня на bitcoindхосте с myip=localhostили с myip=127.0.0.1. Он также работает с отдельного хоста в локальной сети при myip=192.168.0.xxусловии, что я настроил свой брандмауэр Linux ufw, чтобы разрешить подключение к порту 8332 на bitcoindхосте, и при условии, что у меня есть rpcallowip=0.0.0.0/0файл bitcoindконфигурации (и не забудьте перезапустить bitcoindпосле обновления файла конфигурации). Я предлагаю вам использовать var_dump($bitcoin->getinfo());, чтобы вы действительно могли видеть, работает ли он (у вас могут быть сбои без исключения, которые возвращаются false)

Ответы (1)

Убедитесь, что ваш порт 8332 открыт с помощью ufw. У некоторых провайдеров VPS очень мало открытых по умолчанию в целях безопасности. Digitalocean, например, больше не открывает его по умолчанию.

sudo ufw allow 8332

Библиотека Easybitcoin использует cURL, и она не всегда включена или установлена ​​по умолчанию.

С PHP 5 вы можете легко установить его, выполнив apt-get install php5-curlкоманду. С PHP7,sudo apt-get install php-curl

После установки убедитесь, что он включен. Найдите свой php.iniфайл и раскомментируйте ;extension=php_curl.dllэту строку, удалив ;(точка с запятой).

Запустите тестовую страницу phpinfo();и убедитесь, что curl установлен и включен. Перезапустите Apache, sudo service apache2 restart.

Если вы по-прежнему не можете заставить его работать, вернитесь к файлу php.ini, включите все отчеты об ошибках и сообщите нам, что это за ошибка. Убедитесь, что вы снова отключили сообщения об ошибках, прежде чем начать работу.

Как только я запустил его как php-скрипт в окне терминала, а также запустил apache2 (со index.htmlстраницей по умолчанию), как мне быстро запустить мой php firefoxиз localhost. Я попытался ввести `<?php echo 'Это php' ?> в свой html, но, похоже, мне нужно нечто большее. Не волнуйтесь, если слишком долго объяснять, я когда-нибудь буду изучать веб-программирование.
Используйте что-то вроде XAMPP, если вы хотите запускать PHP локально на своем компьютере.
Я установил Curl на своем веб-сервере curl, когда я выполняю простой запрос curl с моего сервера, он выдает мне ошибку, например: (7) Не удалось подключиться к порту 8332 187.223.xx: в соединении отказано
Хорошо, я смог воссоздать это же сообщение об ошибке, когда мой узел не работает или когда я запускаю клиент с графическим интерфейсом ядра биткойн. Он отлично работает, когда я запускаю биткойн. Я предполагаю, что вы используете биткойн?
Я запускаю Bitcoin Core с daemon=1указанным в моем файле bitcoin.conf. И отлично работает с локальным хостом.