php-cURL到localhost返回对打开端口拒绝的权限



当我试图用php-cURL库在端口4321上向localhost发出cURL请求时,收到了一个拒绝权限的错误。对于以前遇到过这种情况的人来说,这将是非常容易或显而易见的。

我能够从局域网上的另一个系统向生产服务器发出相同的cURL请求。例如,如果在局域网上的另一个系统上,我使用下面的函数$host='http://192.168.1.100:4321'发出请求,那么一切都会正常工作。如果我在$host='http://localhost:4321'$host='http://127.0.0.1:4321'$host='::1:4321'的系统上运行,那么我会得到一个cURL错误"Permission Denied">

我为我非常简单的请求编写的函数是:

function makeRequest($host,$data){
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $host);
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = json_decode(curl_exec($ch),true);
if(!empty(curl_error($ch))){
$result = print_r(curl_error($ch).' - '.$host);
}
curl_close($ch);
return $result;
}

该系统是一个centos 7服务器。运行firewall-cmd --list-all显示我的开放端口

ports: 443/tcp 80/tcp 4321/tcp

如果你有什么想法,或者需要我检查一下设置,请不要犹豫。

编辑主机文件看起来像

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

EDIT2

当我对同一个端口使用命令行curl时,一切都会重新启动。

/]$ curl -v localhost:4321
* About to connect() to localhost port 4321 (#0)
*   Trying ::1...
* Connected to localhost (::1) port 4321 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost:4321
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: no-cache, no-store, must-revalidate
< Content-Length: 774....

我在以下位置找到了问题的答案:使用Curl发布xml时获取权限被拒绝?

问题是SELinux,解决方案是运行:

sudo setsebool httpd_can_network_connect 1

我可以使用php-cURL库访问世界上其他所有网站,但不能访问不同端口上的localhost,而我可以从命令行cURL访问localhost,这对我来说毫无意义。

相关内容

  • 没有找到相关文章

最新更新