Title: Can't connect to node using easybitcoin.php
Post by: edgycorner on June 02, 2018, 08:49:02 PM
Hey, I am using this code on one of my vps <?php require_once('easybitcoin.php'); $bitcoin = new Bitcoin('uname','password','node_ip','port'); $new=$bitcoin->status; var_dump($new); var_dump($bitcoin); ?>
I am getting this everytime: NULL object(Bitcoin)#1 (12) { ["username":"Bitcoin":private]=> string(12) "uname" ["password":"Bitcoin":private]=> string(18) "password" ["proto":"Bitcoin":private]=> string(4) "http" ["host":"Bitcoin":private]=> string(12) "node_ip" ["port":"Bitcoin":private]=> string(4) "8392" ["url":"Bitcoin":private]=> NULL ["CACertificate":"Bitcoin":private]=> NULL ["status"]=> NULL ["error"]=> NULL ["raw_response"]=> NULL ["response"]=> NULL ["id":"Bitcoin":private]=> int(0) }
Here's the bitcoin.conf from the node: prune=600 maxconnections=12 maxuploadtarget=20 server=1 rpctimeout=30
rpcallowip=VPS IP rpcport=8392 rpcuser=uname rpcpassword=passwrd
daemon=1
Any help will be appreciated, thanks!
Title: Re: Can't connect to node using easybitcoin.php
Post by: edgycorner on June 03, 2018, 05:12:06 PM
easybitcoin seems to be no longer working, or needs some tweaking. I have written a php function using curl. You can use this php function, if you are also looking for a solution: Just pass the method in the function and make sure to edit out your rpc details inside the function. <?php
function bitcoin($method){ $ch = curl_init(); $rpcuser='rpcusername'; $rpcpassword='rpcpassword'; $host='nodeIP'; //IP address of your node or localhost, if running locally $port='port';
curl_setopt($ch, CURLOPT_URL, "http://$rpcuser:$rpcpassword@$host:$port/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"jsonrpc\":\"1.0\",\"id\":\"curltext\",\"method\":\"$method\",\"params\":[]}"); curl_setopt($ch, CURLOPT_POST, 1);
$headers = array(); $headers[] = "Content-Type: application/x-www-form-urlencoded"; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close ($ch); return($result); } $method="getblockchaininfo"; //bitcoin-cli method like getchaininfo,getwalletinfo etceter $lol=bitcoin($method); ?>
Cheers!
Title: Re: Can't connect to node using easybitcoin.php
Post by: btj on June 08, 2018, 03:43:01 AM
You can use JSON RPC CLIENT: <?php /* COPYRIGHT
Copyright 2007 Sergio Vaccaro <sergio@inservibile.org>
This file is part of JSON-RPC PHP.
JSON-RPC PHP is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
JSON-RPC PHP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with JSON-RPC PHP; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
/** * The object of this class are generic jsonRPC 1.0 clients * http://json-rpc.org/wiki/specification * * @author sergio <jsonrpcphp@inservibile.org> */ class jsonRPCClient { /** * Debug state * * @var boolean */ private $debug; /** * The server URL * * @var string */ private $url; /** * The request id * * @var integer */ private $id; /** * If true, notifications are performed instead of requests * * @var boolean */ private $notification = false; /** * Takes the connection parameters * * @param string $url * @param boolean $debug */ public function __construct($url,$debug = false) { // server URL $this->url = $url; // proxy empty($proxy) ? $this->proxy = '' : $this->proxy = $proxy; // debug state empty($debug) ? $this->debug = false : $this->debug = true; // message id $this->id = 1; } /** * Sets the notification state of the object. In this state, notifications are performed, instead of requests. * * @param boolean $notification */ public function setRPCNotification($notification) { empty($notification) ? $this->notification = false : $this->notification = true; } /** * Performs a jsonRCP request and gets the results as an array * * @param string $method * @param array $params * @return array */ public function __call($method,$params) { // check if (!is_scalar($method)) { throw new Exception('Method name has no scalar value'); } // check if (is_array($params)) { // no keys $params = array_values($params); } else { throw new Exception('Params must be given as array'); } // sets notification or request task if ($this->notification) { $currentId = NULL; } else { $currentId = $this->id; } // prepares the request $request = array( 'method' => $method, 'params' => $params, 'id' => $currentId ); $request = json_encode($request); $this->debug && $this->debug.='***** Request *****'."\n".$request."\n".'***** End Of request *****'."\n\n"; // performs the HTTP POST $opts = array ('http' => array ( 'method' => 'POST', 'header' => 'Content-type: application/json', 'content' => $request )); $context = stream_context_create($opts); if ($fp = fopen($this->url, 'r', false, $context)) { $response = ''; while($row = fgets($fp)) { $response.= trim($row)."\n"; } $this->debug && $this->debug.='***** Server response *****'."\n".$response.'***** End of server response *****'."\n"; $response = json_decode($response,true); } else { throw new Exception('Unable to connect to '.$this->url); } // debug output if ($this->debug) { echo nl2br($debug); } // final checks and return if (!$this->notification) { // check if ($response['id'] != $currentId) { throw new Exception('Incorrect response id (request id: '.$currentId.', response id: '.$response['id'].')'); } if (!is_null($response['error'])) { throw new Exception('Request error: '.$response['error']); } return $response['result']; } else { return true; } } } ?> Example of use: <?php function generate_address() { require_once 'jsonRPCClient.php'; $bitcoin = new jsonRPCClient('http://'.json_username.':'.json_password.'@'.json_server.':'.json_port.'/'); $address = $bitcoin->getnewaddress(); return $address;
} echo generate_address(); ?>
|