【问题标题】:Is Endpoint with custom port does not supported by Guzzle?Guzzle 不支持带有自定义端口的端点吗?
【发布时间】: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 配置中的问题。

标签: php laravel curl guzzle


【解决方案1】:

您的服务器中是否配置了任何代理?如果是这样,请尝试在您的 guzzle 请求中设置代理:Guzzle proxy docs

基本上,您必须使用代理设置一个数组。

$client->request('GET', '/', ['proxy' => 'tcp://localhost:8125']);

【讨论】:

  • 即使添加了代理参数,我仍然遇到同样的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多