我正在使用最新版本的guzzle。
(from composer.json)
"guzzlehttp/guzzle": "~5"
(from composer.lock)
"name": "guzzlehttp/guzzle",
"version": "5.2.0",
当我尝试使用包含PORT编号的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"
当我这样做但省略了PORT:
$response = $client->get('http://www.hostdnshere.com', array());
请求成功没有问题。我搜索了文档并用Google搜索了网页,但无法找到如何为主机设置端口,因为它无法包含。
此外,我已经在服务器表单上使用cURL测试了所有请求正在发送,无论有没有PORT,无论如何都像魅力一样,所以我知道它不是服务器,DNS,代理的问题或者PORTS。
答案 0 :(得分:1)
所有那些因为
而撞到墙上的人"cURL error 7: Failed to connect to 000.000.000.000: Permission denied"
错误,这一切都归结为'SELINUX'。这是正确的,任何编程语言编写的任何cURL包装都会受到以下事实的影响:当'SELINUX'设置为'强制'时,cURL对其中包含非标准PORT的URL执行会产生问题(即my.domain.com:8888)。
建议仅限本地开发,如果您希望在URL中使用非标准PORTS,则将“SELINUX”设置为“已禁用”。生产中的正确解决方案是使用没有PORT的干净URL,以便启用“SELINUX”。
打开:
nano /etc/selinux/config
找到:
SELINUX=enforcing
更改:
SELINUX=disabled
使用CentOS的人很可能会遇到这个问题,因为默认情况下'SELINUX'设置为'强制执行'。