PHP Coinbase API не работает на live, но на localhost

Я разрабатываю систему, которая будет отправлять BTC определенному получателю через coinbase php api. Система работает нормально на моем локальном хосте, но после переноса в живую она не работает и сообщений об ошибках нет. Я попытался отследить ошибку шаг за шагом, повторив -3 и запустив скрипт, и обнаружил, что когда я помещаю эхо после

$account = $client->getPrimaryAccount();

echo -3;

... У меня белая страница и результат теста нет -3.

Вот полная конструкция этого процесса:

$apiKey = "dfdsfsd";
$apiSecret = "fdsfdsfsfdff";

$configuration = Configuration::apiKey($apiKey, $apiSecret);
$client = Client::create($configuration);
$_btc_wallet = @$_GET['_btcwallet'];
$_btc_amount = @$_GET['_btc_amount'];
$transaction = Transaction::send([
    'toBitcoinAddress' => $_btc_wallet,
    'bitcoinAmount' => $_btc_amount,
    'description' => 'Group Fund Transfer',
]);

$account = $client->getPrimaryAccount();

echo -3;

$client->createAccountTransaction($account, $transaction);
echo 1;
exit;

Сильно нужна помощь .... :-(


person Juvy Cagape    schedule 06.11.2016    source источник


Ответы (1)


Tl; dr. Вы должны установить и запустить Composer и добавить эту строку перед остальной частью вашего кода:

require __DIR__ . '/vendor/autoload.php';

Coinbase PHP API использует Composer для обработки своих зависимостей, поэтому выполнение процедуры установки, подробно описанной на Github, является обязательным, чтобы избежать головной боли.

Composer читает файл конфигурации, предоставленный автором Coinbase PHP API, и автоматически создает структуру каталогов, которая содержит все необходимые зависимости и, что наиболее важно, скрипт автозагрузки.

Раньше PHP был на 100% самодостаточным, имея множество уже встроенных функций и классов, поэтому у многих PHP-кодеров (например, у меня) возникли проблемы с переключением на более модульный подход, чем-то похожий на стиль Python с его командой pip или PEAR в Perl galaxy, и так далее, конечно, с некоторыми важными отличиями.

Итак, обязательно соблюдайте такую ​​последовательность:

1) Допустим, вы работаете в Linux, у вас установлен локальный веб-сервер, а корень документа вашего веб-сайта - /var/www/newsite.

2) Введите корень вашего документа, загрузите последнюю версию Coinbase PHP API и распакуйте / распакуйте ее. Предлагаю идти за релизами, а не клонировать репозиторий.

$
$ cd /var/www/newsite

Загрузите архив в корень документа

$
$ tar xzvf coinbase-php-2.5.0.ta.gz

3) Теперь нужно скачать Composer. Перейдите на его домашнюю страницу https://getcomposer.org/ и нажмите «Загрузить». Следуйте инструкциям в разделе Установка из командной строки.

Я сообщаю о них здесь для удобства, но они могут измениться, поэтому всегда проверяйте домашнюю страницу Composer. Из корня вашего документа:

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

4) последний шаг, запустите Composer и подождите, пока он выполнит задание:

    $ php composer.phar install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 26 installs, 0 updates, 0 removals
  - Installing guzzlehttp/promises (v1.3.1): Downloading (100%)
  - Installing psr/http-message (1.0.1): Downloading (100%)
  - Installing guzzlehttp/psr7 (1.4.2): Downloading (100%)
  - Installing guzzlehttp/guzzle (6.2.3): Downloading (100%)
  - Installing psr/log (1.0.2): Downloading (100%)
  - Installing symfony/yaml (v3.2.8): Downloading (100%)
  - Installing sebastian/version (1.0.6): Downloading (100%)
  - Installing sebastian/global-state (1.1.1): Downloading (100%)
  - Installing sebastian/recursion-context (1.0.5): Downloading (100%)
  - Installing sebastian/exporter (1.2.2): Downloading (100%)
  - Installing sebastian/environment (1.3.8): Downloading (100%)
  - Installing sebastian/diff (1.4.2): Downloading (100%)
  - Installing sebastian/comparator (1.2.4): Downloading (100%)
  - Installing doctrine/instantiator (1.0.5): Downloading (100%)
  - Installing phpunit/php-text-template (1.2.1): Downloading (100%)
  - Installing phpunit/phpunit-mock-objects (2.3.8): Downloading (100%)
  - Installing phpunit/php-timer (1.0.9): Downloading (100%)
  - Installing phpunit/php-file-iterator (1.4.2): Downloading (100%)
  - Installing phpunit/php-token-stream (1.4.11): Downloading (100%)
  - Installing phpunit/php-code-coverage (2.2.4): Downloading (100%)
  - Installing webmozart/assert (1.2.0): Downloading (100%)
  - Installing phpdocumentor/reflection-common (1.0): Downloading (100%)
  - Installing phpdocumentor/type-resolver (0.2.1): Downloading (100%)
  - Installing phpdocumentor/reflection-docblock (3.1.1): Downloading (100%)
  - Installing phpspec/prophecy (v1.7.0): Downloading (100%)
  - Installing phpunit/phpunit (4.8.35): Downloading (100%)
symfony/yaml suggests installing symfony/console (For validating YAML files using the lint command)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit-mock-objects suggests installing ext-soap (*)
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.2.1)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
Writing lock file
Generating autoload files
$

5) Обратите внимание на последнюю строку выше. Примеры на Github README Coinbase PHP API немного вводят в заблуждение, поскольку Composer хорош и создает файл с именем autoload.php, который необходимо использовать для правильной загрузки новых библиотек.

Итак, вот ваш код, измененный для его использования, таким образом загружая все необходимые зависимости:

<?php

require __DIR__ . '/vendor/autoload.php';

$apiKey = 'topsecret';
$apiSecret = 'topkey';

$configuration = Configuration::apiKey($apiKey, $apiSecret);
$client = Client::create($configuration);

$account = $client->getPrimaryAccount();

Линия:

require __DIR__ . '/vendor/autoload.php';

должно иметь значение. Без него сценарий завершается без ошибок на экране, но со многими ошибками в файле журнала php, но это поведение зависит от конфигурации сервера.

Надеюсь это поможет!

person shub    schedule 21.05.2017