Coinbase API перехватывает фатальную ошибку, обнуляет нулевой аргумент для httpexception::exceptionClass() в Live Server
В localhost все работает нормально. Но на живом сервере он ломается при фатальной ошибке и не выполняется дальше.
/* ======== API CONFIG ========== */
require __DIR__.'/dev_components/wallet_api_components/vendor/autoload.php';
use Coinbase\Wallet\Client;
use Coinbase\Wallet\Configuration;
use Coinbase\Wallet\Resource\Account;
use Coinbase\Wallet\Resource\Address;
use Coinbase\Wallet\Resource\Transaction;
use Katzgrau\KLogger\Logger;
/* Settings */
$apiKey = "XXXXXXXXXX";
$apiSecret = "YYYYYYYYYYYYYYY";
$configuration = Configuration::apiKey($apiKey, $apiSecret);
$logger = new Logger(__DIR__.'/errorlog', Psr\Log\LogLevel::WARNING, array (
'logFormat' => '{date} - {level} - {message}',
'filename' => 'error_log',
'extension' => 'txt'
));
$logger->info('INFO message');
$configuration->setLogger($logger);
$client = Client::create($configuration);
// I have used print_r($configuration) ; print_r($client) to check the full
//configuration and client object and in both localhost and Live server its
//showing same data
$account_btc = $client->getAccount('BTC'); // From this line nothing executing
$account_eth = $client->getAccount('ETH');
Ошибка
stderr: PHP Исправляемая фатальная ошибка: Аргумент 1, передаваемый в Coinbase\Wallet\Exception\HttpException::exceptionClass(), должен быть экземпляром Psr\Http\Message\ResponseInterface, значение которого равно нулю, и называется в /path/vendor/coinbase/coinbase/src/Exception/HttpException.php в строке 33 и определено в /path/vendor/coinbase/coinbase/src/Exception/HttpException.php в строке 98
В чем причина получения вышеуказанной фатальной ошибки в Live Server и как от нее избавиться?
2 ответа
Я также получил эту ошибку, когда устанавливал coinbase api. Эта ошибка была связана с сертификатом ssl, поэтому я скачал файл cacert.pem с https://curl.se/docs/caextract.html и поместил его в папку etc. После этого я изменил имя вершины в «src/Configuration.php» в строке 58 «$this->caBundle = DIR.'/../etc/ca-coinbase.crt'» на «$this->caBundle = DIR.'/../etc/cacert.pem'". Таким образом, моя ошибка устранена.
Я предполагаю, что вы не опубликовали весь дамп ошибок, но смотрите на свою ошибку: stderr: PHP Catchable fatal error: Argument 1 passed to Coinbase\Wallet\Exception\HttpException::exceptionClass() must be an instance of Psr\Http\Message\ResponseInterface
Это означает, что когда вызывается HTTPException:exceptionClass(), вы должны вызывать его, используя объект ResponseInterface в аргументе.
Если вышеупомянутая вещь не решает вашу проблему, то выложите полный дамп ошибки. Если вы не публикуете полный дамп ошибок, трудно понять причину.