我有一个API我正在尝试集成到我的网络应用程序(一个比特币网站),这是用PHP编写的。 API有一个php库,它们通过JSON进行通信。在我的服务器上,我有3个脚本:调用我需要的函数的脚本(blockTest.php),具有我所有凭据的脚本(即API密钥,pin,API版本; cred.php),以及块的库.io API,包含所有方法(block_io.php)。
我的第一个php脚本包含以下代码:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once 'block_io.php';
require_once 'cred.php';
$addressInfo = $block_io_btc->get_my_addresses(array())
?>
我在localhost上设置了开发环境,这些脚本运行正常。我可以对block.io API进行所有调用并获取相应的数据。但是,当我将脚本上传到共享主机时,我会收到以下错误:
Fatal error: Uncaught exception 'Exception' with message 'Failed: '
in/home/sites/public_html/vendor/block_io.php:124 Stack trace: #0
/home/sites/public_html/vendor/block_io.php(65): BlockIo-
>_request('get_my_addresse...', Array) #1
/home/sites/public_html/vendor/blockTest.php(14): BlockIo-
>__call('get_my_addresse...', Array) #2
/home/sites/public_html/vendor/blockTest.php(14): BlockIo-
>get_my_addresses(Array) #3 {main} thrown in
/home/sites/public_html/vendor/block_io.php on line 124
一步一步,这对应于block_io.php(65)中的以下代码行:
$response = $this->_request($name, $args);
并在blockTest.php(14)中:
$addressInfo = $block_io_btc->get_my_addresses(array())
并在block_io.php(124)中:
if ($json_result->status != 'success') { throw new Exception('Failed: ' .
$json_result->data->error_message); }
// Spit back the response object or fail
return $result ? $json_result : false;
}
错误就是状态!=成功。这是http状态,但没有data-&gt; error_message。我去他们的网站上玩他们的API。如果我正确输入我的详细信息,我会得到以下输出:
正如您所看到的,响应是200:使用正确的凭据获得成功。当我通过输入错误的API密钥更改凭据时,我得到以下内容:
在后一种情况下,存在404:错误。在我的生产环境中,我没有得到任何数据 - &gt; error_message。这让我相信我的Web主机使用的php版本可能会用json_decode()创建问题,因为block_io.php第121-130行是这样的:
$json_result = json_decode($result);
if ($json_result->status != 'success') { throw new Exception('Failed: ' .
$json_result->data->error_message); }
// Spit back the response object or fail
return $result ? $json_result : false;
}
我确保我在MAMP上的php版本与我的web主机(5.5)相同。仍然没有(记住完全相同的脚本在localhost上正常工作)。我在这里检查了我的脚本的http状态,一切都很好:
(声誉不足以发布超过2个链接,但我的服务器响应200:成功状态)
所以...。我真的不知道问题是什么。我的网站主机的phpinfo()显示他们已启用JSON,据我所知,他们的php.ini中没有magic_quotes = on。如果他们确实有magic_quotes我尝试在$ json_result&amp;上的stripslashes()单独在$ result结果在block_io.php但无济于事。现在我真的不知道还有什么可以尝试的!