【发布时间】:2020-02-09 11:01:54
【问题描述】:
我正在尝试从我的 Laravel 5.8.* 项目中访问 API 端点。 我正在使用 Guzzle 6.0 和 PHP 版本 7.1.3。
当我在本地机器上运行我的项目时,我成功获得了 API 响应。
但是将项目上传到肝脏服务器后,我无法获得API响应。
我收到响应“cURL 错误 7:无法连接到 xx.xx.xx.xx 端口 3333:连接被拒绝(请参阅https://curl.haxx.se/libcurl/c/libcurl-errors.html)”。
我使用的代码如下。
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'http://xx.xx.xx.xx:3333/api/getrecords', [
'tbl' => ['user', 'activity']
]);
echo $res->getMessage();
相同的代码在本地机器上运行良好,但在实时服务器中却不行。
我的服务器是 Linux 服务器。
【问题讨论】:
-
您确定服务器上的端口没有关闭吗?
-
我应该在哪个服务器上检查 API 服务器或 Laravel Project 托管服务器上的端口状态?此外,我在本地机器上收到来自 API 的响应,但在实时服务器上却没有。
-
尝试简单的
file_get_contents('http://xx.xx.xx.xx:3333/api/getrecords')。如果它也失败了,那么问题出在服务器上,而不是在大吃大喝中。也没有参数tbl,看起来是个错误。 -
@Stalinko,我确实使用了 PHP Curl 并得到了相同的响应“cUrl 错误 7,连接被拒绝”。那么我应该检查API托管服务器端口是否启用?我不明白的一件事是,为什么它在我的本地服务器上工作但在实时服务器上不工作?
-
@SarojShrestha 它可以在您的本地计算机上运行,因为它被允许连接到该远程地址,而您的服务器有一些设置不允许它离开。也许这是防火墙或其他东西。如果您有基于 linux 的操作系统,请在命令行
curl http://xx.xx.xx.xx:3333/api/getrecords中尝试,如果它不起作用,则问题出在服务器配置中。如果它有效,那么 PHP 配置中的问题。