php cURL to localhost возвращает отказано в разрешении на открытый порт

Я получаю ошибку об отказе в разрешении при попытке сделать запрос cURL с библиотекой php cURL на localhost на порту 4321. Надеюсь, это будет действительно легко или очевидно для тех, кто сталкивался с этим раньше.

Я могу сделать такой же запрос cURL из другой системы в локальной сети на производственный сервер. Например, если в другой системе в локальной сети я делаю запрос, используя функцию ниже, где $host='http://192.168.1.100:4321' тогда все работает точно так, как должно. Если я запускаю на самой системе, где $host='http://localhost:4321' или же $host='http://127.0.0.1:4321' или же $host='::1:4321' тогда я получаю ошибку cURL «Отказано в доступе»

Функция, которую я написал для моего очень простого запроса:

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

Если у вас есть идея, или вам нужно, чтобы я проверил настройки, не стесняйтесь спрашивать.

РЕДАКТИРОВАТЬ
Файл hosts выглядит так

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....

0

Решение

Я нашел ответ на проблему по адресу:
Получение доступа запрещено при публикации XML с использованием Curl?

Проблема в SELinux, а решение — запустить

user@host /]$ sudo setsebool httpd_can_network_connect=1

Для меня не имеет смысла, что я мог бы использовать библиотеку php cURL для доступа к любому другому веб-сайту в мире, но не к localhost через другой порт, в то время как я смог получить доступ к localhost из командной строки cURL.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]