Я получаю сообщение об ошибке 500 с моего веб-сервера, когда пытаюсь отправить необработанную транзакцию через RPC API.
PHP-сообщение:
PHP Warning: fopen(://...@IP:8332/): failed to open stream: HTTP request failed!
HTTP/1.1 500 Internal Server Error
in /usr/share/nginx/html/common/jsonRPCClient.php on line 132
PHP-сообщение:
PHP Fatal error: Uncaught exception 'Exception' with message
'Unable to connect to://bitcoinrpc:PASSWORD@IP:8332/'
in /usr/share/nginx/html/common/jsonRPCClient.php:140
Трассировки стека:
#0 /usr/share/nginx/html/tools/do_sendBTC.php(131):
jsonRPCClient->__call('sendrawtransact...', Array)
#1 /usr/share/nginx/html/tools/do_sendBTC.php(131):
jsonRPCClient->sendrawtransaction('010000000115d34...')
#2 {main}
Это строка, которая дает сбой:
$result = $bitcoin->sendrawtransaction($tx_data);
Любой другой вызов API работает, например validateaddress
.
Любая идея, почему это не удается? Та же необработанная транзакция работает, если ее отправить через командную строку bitcoind.
Спасибо
Вы не можете отправить одну транзакцию дважды. Если вы уже отправили его из командной строки биткойнов, произойдет сбой с ошибкой -22 (cli) или 500 (http).
500 означает неверные данные: недостаточно средств, неправильный синтаксис, неверный тип, невозможная команда...
Попробуйте привести к строке: $bitcoin -> sendrawtransaction((string)$tx_data)
и выполните, var_dump($tx_data)
чтобы найти тип.
Если это не поможет, отправьте этот POST-запрос с cURL, как в туториале: https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)#Command_line_.28cURL.29
Антони