4

I want to make API calls to my Bitcoin Core wallet from my webpage but when I try to connect it gives me Internal Server Error

I'm using easybitcoin.php JSON from Github.

I'm trying with this JSON RPC call:

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

My bitcoin.conf file has:

  • listen=1
  • maxconnections=15
  • server=1
  • daemon=1
  • rpcuser=myusername
  • rpcpassword=mypassword
  • rpcclienttimeout=60
  • rpcport=8332
  • rpcallowip=0.0.0.0/0 (Before I put my IP address here but it didn't solve too)

When I use bitcoin-cli.exe client to send commands to my Bitcoin Core server via 127.0.0.1 (localhost) it works perfectly.

What I'm doing wrong?

  • Do you mind pasting the error message? – Nick ODell Jan 28 '17 at 06:36
  • For what it's worth, your code works perfectly for me on the `bitcoind` host with `myip=localhost` or with `myip=127.0.0.1`. It also works from a separate host on local network with `myip=192.168.0.xx` provided I set up my Linux firewall `ufw` to allow connection to port 8332 on the `bitcoind` host, and provided I have `rpcallowip=0.0.0.0/0` on my `bitcoind` config file (and remember to restart `bitcoind` after updating config file). I suggest you use `var_dump($bitcoin->getinfo());` so you can really see if it is working (you may have failures without exception being thrown returning `false`) – Sven Williamson Jan 28 '17 at 09:24

1 Answers1

1

Make sure your 8332 port is open using ufw. Some VPS providers only have very few open by default for security. Digitalocean, for example doesn't have it open by default anymore.

sudo ufw allow 8332

Easybitcoin library uses cURL, and it's not always enabled or installed by default.

With PHP 5, you can easily install it by running apt-get install php5-curl command. With PHP7, sudo apt-get install php-curl

Once installed make sure its enabled. Locate your php.ini file and uncomment ;extension=php_curl.dll this line by removing ;(semi colon).

Run a test page with phpinfo(); and make sure curl is installed and enabled. Restart Apache, sudo service apache2 restart.

If you still can't get it to work go back to your php.ini file and turn on all error reporting and let us know what the error is. Be sure you turn the error messages off again before you go live.

m1xolyd1an
  • 5,566
  • 2
  • 14
  • 30
  • Once I have it running as php script on terminal window, having also apache2 running (with default `index.html` page), how do I quickly make my php run on `firefox` from `localhost`. I tried introducing ` in my html but it seems I need more than that. Don't worry if too long to explain, I will study web programming at some point. – Sven Williamson Jan 28 '17 at 16:45
  • Use something like XAMPP, if you want to run PHP locally on your machine. – m1xolyd1an Jan 28 '17 at 17:23
  • I have instaled Curl on my webserver curl, when I do a simply curl request from my server it gives me error like: (7) Failed to connect to 187.223.x.x port 8332: Connection refused – Carlos De la Garza Jan 30 '17 at 00:17
  • Ok I was able to recreate this same error message when my node is not running, or when I run the bitcoin core GUI client. It works fine when I run bitcoind. I assume you're running bitcoind? – m1xolyd1an Jan 30 '17 at 03:37
  • I'm running Bitcoin Core with `daemon=1` specified on my bitcoin.conf file. And works fine with localhost too. – Carlos De la Garza Feb 02 '17 at 03:27