【发布时间】:2015-05-15 01:36:30
【问题描述】:
我正在使用最新版本的 guzzle。
(from composer.json)
"guzzlehttp/guzzle": "~5"
(from composer.lock)
"name": "guzzlehttp/guzzle",
"version": "5.2.0",
当我尝试使用包含端口号的 URL 请求(GET 或 POST)时:
$response = $client->get('http://www.hostdnshere.com:8888', array());
我收到以下错误:
string(68) "cURL error 7: Failed to connect to 000.000.000.000: Permission denied"
当我做同样的事情但省略端口时:
$response = $client->get('http://www.hostdnshere.com', array());
请求成功,没有问题。我已经搜索了文档并在网上搜索过了,但由于无法包含它,所以无法找到如何为主机设置端口。
此外,我已经在发送请求的服务器表单上使用 cURL 对其进行了测试,无论有无 PORT,无论如何都像一个魅力,所以我知道这不是服务器、DNS、代理的问题,或端口。
【问题讨论】:
-
在 GitHub 上看到你的问题,很遗憾 I can't reproduce what you're describing
-
给出具体的主机名,这似乎不是
guzzle问题,而是指定的端口无效,或授权保护区域 -
是的,我复制了你的测试,它工作正常。我正在从 Laravel 4.2 应用程序中的 PHP 类运行 Guzzle,但出现错误。当我检查 composer.json 文件时,Guzzle 仅在其中列出一次,如上所示,但是当我查看 composer.lock 文件时,我看到 guzzle/guzzle 以及 guzzlehttp/guzzle 由 composer 安装,即使我删除供应商 bin 和 lock 文件并进行干净的作曲家安装。所以其他一些包依赖于 Guzzle,但由于两者有不同的命名空间,我认为它们不会相互冲突。
-
而且我在 PHP 类中使用 GuzzleHttp\Client 完全限定了最新版本;使用 GuzzleHttp\Exception\RequestException;
-
以及在创建时完全限定它以确保使用最新的 Guzzle 来实例化对象。 $client = new GuzzleHttp\Client();