Problem bei der Integration des Bitcoin-Daemons mit PHP

Ich habe die Daemons von Bitcoin, Litecoin und Dogecoin auf demselben Server installiert. Alle drei sind betriebsbereit, aber der Bitcoin-Daemon antwortet nicht mit irgendetwas, wenn ich es ausführe bitcoind getinfo. Es können Netzwerkprobleme oder ähnliches sein. Ich habe PHP auf demselben Server installiert und eine index.phpDatei in dem /var/www/Ordner erstellt.

Inhalt der index.phpDatei:

<?php
    include_once('Bitcoin.php');
    include_once('jsonRPCClient.php');
    $dogecoin = new jsonRPCClient('http://user:pass@localhost:8332/');
    print_r($dogecoin->getinfo());
?>

Inhalt von Bitcoin.php:

<?php
    class Bitcoin (
        // @var string
        private $username;
        // @var string
        private @password;
        // @var string
        private $url;
        // @var string
        private $id;

        public function __construct($url,$username,$password)
        {
            $this->url=$url;
            $this->username = $username;
            $this->password = $password;
            $this->id = 1;
        }

        public function __call($method,$params)
        {
            $params = array_values($params);

            $request = json_encode(array(
                                       'method' =>strtolower($method),
                                       'params' => $params,
                                       'id' => $this-> id));
            $curl = curl_init();
            curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_HTTPHEADER, Array("Content type:application/json"));
            curl_setopt($curl, CURLOPT_URL, $this->url);
            curl_setopt($curl, CURLOPT_USERPWD, $this->username.":".$this->password);
            curl_setopt($curl, CURLOPT_POST, TRUE);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
            $response = curl_exec($curl);
            curl_close($curl);

            if(!$resposne)
            {
                throw new Exception('Unable to connect to '.$this->url, 0);
            }
            $response = json_decode($response,true);
        }

        Then there are a condition to throw a different error upon a different situation.

    }
@peter-mortensen, dass zusätzliche Zeilen nur dazu dienen, nicht alle Ausnahmen einzugeben, die in der eigentlichen Datei nicht so waren

Antworten (2)

Hallo?

Ok, ich habe im ganzen Internet nach Tutorials zum Thema "Wie man Bitcoin-Daemon in PHP integriert" gesucht. Ich habe viele gefunden und keines davon hat mir geholfen, es fehlerfrei zum Laufen zu bringen, einige von ihnen haben nach 90% Fertigstellung unerwartete und seltsame Fehler ausgegeben und andere von ihnen gut genug, um nur beim Starten Fehler zu machen, was mir Zeit und Mühe gespart hat. Jetzt, da ich das getan habe, wonach ich gesucht habe, warum nicht ein Schritt-für-Schritt-Tutorial erstellen, um anderen Mitgliedern zu helfen. Also lasst uns anfangen.

Bevor wir beginnen, sollten Sie tmux installieren, das Ihnen hilft, Ihre Arbeit zu speichern, auch wenn Sie vom vps getrennt sind. So installieren Sie tmux:

sudo apt-get install tmux

Um tmux zu starten, geben Sie einfach tmux ein und um zum mai-Bildschirm zurückzukehren, drücken Sie Strg b und dann d, um die Sitzung wiederherzustellen, geben Sie erneut tmux Attach ein.

Ich gehe davon aus, dass Sie ein Ubuntu 12.x oder höher haben, da ich es für die Installation verwendet habe. Melden Sie sich bei Ihrem VPS oder dem Terminal Ihres Computers an und installieren Sie die Python-Softwareeigenschaften, indem Sie den folgenden Befehl eingeben:

sudo apt-get install python-software-properties

Fügen Sie dann das Repository ppa:bitcoin/bitcoin hinzu, indem Sie den folgenden Befehl eingeben

sudo add-apt-repository ppa:bitcoin/bitcoin

In meinem Fall hat dies nicht funktioniert und einen Fehler ausgegeben, der besagt, dass der Befehl add-apt-repository nicht gefunden wurde. In späteren Versionen von Ubuntu befindet sich dieser Befehl nicht wie in früheren Versionen unter dem Paket python-software-properties, sondern ist in software-properties-common verfügbar. Also hatte ich es installiert, indem ich diese Befehle ausgeführt hatte:

sudo aptitude install software-properties-common

Um herauszufinden, in welchem ​​Paket der gesuchte Befehl existiert, hilft Folgendes:

sudo apt-fille update

Leider war dies in meinem Fall auch nicht installiert, also hatte ich es durch Ausführen des folgenden Befehls installiert:

apt-get install apt-file

Jetzt bekomme ich die Meldung "Die Datei ist auf dem neuesten Stand"

Führen Sie nun sudo apt-file search add-apt-repository aus

Sie werden aufgefordert, diese Installation zu bestätigen, drücken Sie zur Bestätigung die Eingabetaste.

Jetzt laufen

sudo aptitude update

und dann sudo aptitude install bitcoind

Erstellen Sie ein neues Verzeichnis, indem Sie Folgendes eingeben:

mkdir ~/.bitcoin
cd ~/.bitcoin

Erstellen Sie in diesem Verzeichnis eine neue Datei mit dem Namen bitcoin.conf, indem Sie Folgendes eingeben: nano bitcoin.conf

folgenden Code in die Textdatei einfügen:

server=1
daemon=1
rpcuser=any_username
rpcpassword=any_password

Beenden Sie den Vorgang, indem Sie Strg+x drücken, um die Änderungen zu bestätigen, drücken Sie Y und dann die Eingabetaste. Starten Sie den Bitcoin-Daemon, indem Sie Folgendes eingeben:

bitcoind

Der Bitcoin-Daemon ist jetzt installiert und läuft. Sie können ihn überprüfen, indem Sie den folgenden Befehl ausführen

bitcoind getinfo

Jetzt werden wir Apache und PHP auf unserem Server installieren

Um Apache zu installieren, führen wir den folgenden Code aus:

sudo apt-get install apache2

Sobald Apache installiert ist, überprüfen Sie es, indem Sie Ihre IP-Adresse in den Browser eingeben. Es wird sagen, dass es funktioniert!

Jetzt installieren wir PHP mit dem folgenden Befehl:

sudo apt-get install php5 libapache2-mod-php5

Navigieren Sie nun zum Ordner var/www und laden Sie jsonRPCClient.php mit dem folgenden Befehl herunter:

wget http://pmtocoins.com/JSON-RPC_PHP_light.zip

entpacken Sie es nach dem Herunterladen, indem Sie Folgendes eingeben: unzip JSON*.zip

kein Verschieben in das Verzeichnis durch: cd json*/includes

und verschieben Sie jsonRPCClient.php in Ihren www-Ordner

Erstellen Sie nun eine neue index.php-Datei im www-Ordner mit folgendem Code

<?php
include_once('jsonRPCClient.php');
$bitcoin = new jsonRPCClient('http://your_username:your_password@127.0.0.1:8332/');
print_r($bitcoin->getinfo());
?>

und Sie sind fertig, navigieren Sie zu Ihrer IP-Adresse im Browser, z. B. 161.232.12.1/index.php

Sie können sich die API-Aufrufliste hier ansehen: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list

. Sie können die Open Source Bitcoin-PHP-Zahlungsbibliothek verwenden -

https://github.com/cryptoapi/Payment-Gateway

    <?
        require_once( "cryptobox.class.php" );

        $options = array( 
        "private_key" => "",        // private key from gourl.io
        "orderID"     => "your_product1_or_signuppage1_etc",
        "amountUSD"   => 2          // 2 USD
        );  

        // Initialise Payment Class
        $box1 = new Cryptobox ($options);

        // Display Payment Box or successful payment result   
        $paymentbox = $box1->display_cryptobox();

        // A. Process Received Payment
        if ($box1->is_paid()) 
        { 
            // Your code here to handle a successful cryptocoin payment
            // ...
        }  
        else $message .= "The payment has not been made yet";
    ?>
    <!DOCTYPE html>
    <html><head></head>
    <body>
    <?= $paymentbox ?>
    <?= $message ?>
    </body>
    </html>
Das löst das Problem des Fragestellers nicht. Er möchte mit seinem eigenen Bitcoin-Daemon kommunizieren