2017-10-10 29 views
0

포트 4321의 localhost에 php cURL 라이브러리를 사용하여 cURL 요청을 시도 할 때 권한이 거부되었습니다. 누군가가 쉽게 이해할 수 있습니다. 누가 전에 이것에 빠졌습니까?php cURL to localhost가 열린 포트에서 사용 권한을 거부 함을 반환합니다.

로컬 네트워크의 다른 시스템에서 프로덕션 서버로 동일한 cURL 요청을 할 수 있습니다. 예를 들어 근거리 통신망의 다른 시스템에서 다음과 같은 기능을 사용하여 요청하면 $host='http://192.168.1.100:4321'과 같이 모든 것이 정확하게 작동해야합니다. 내가 $host='http://localhost:4321' 또는 $host='http://127.0.0.1:4321' 또는 $host='::1:4321' 그때 내가

내 아주 간단한 요청을 쓴 기능을 "사용 권한이 거부되었습니다"의 컬 오류가 시스템 자체에서 실행하는 경우입니다 :

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

보여줍니다. 나는 동일한 포트 모두에 대해 명령 행 컬을 사용하면 다시 하차 제공 EDIT2

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 

처럼

편집 호스트 파일을 찾습니다.

/]$ 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

'hosts' 파일을 검사하고'localhost'가'127.0.0.1'에 매핑되어 있는지 확인하고, 그렇지 않다면이 항목을 추가하고 2)'curl'을 실행합니다 명령 줄은'-v' 스위치를 사용하여 전체 출력을 확인하고 더 나은 통찰력을 얻습니다. 명령 줄에서 curl을 실행하는 경우, 결과를 볼 수 있도록 여기에 출력을 덤프하는 것을 고려하십시오. –

+0

첫 번째 (성공한) 시도가 실패한 동안 'http : //'앞에 표시되었음을 알 수 있습니다. 그건 오타예요? cURL은 http (s) – apokryfos

+0

에서 작동해야합니다. 이것은 오타입니다. 먼저'http : // '로 시도한 다음 나중에 사용하지 않았습니다. –

답변

2

나는의 문제에 대한 답을 발견 Getting permission denied while Posting xml using Curl?

문제는 SELinux를하고 솔루션 그것은 나에게 이해가되지 않습니다

[email protected] /]$ sudo setsebool httpd_can_network_connect=1

를 실행하는 것입니다 커맨드 라인 cURL에서 localhost에 액세스 할 수있는 동안 php cURL 라이브러리를 사용하여 다른 모든 웹 사이트에 액세스 할 수 있지만 localhost가 아닌 다른 포트에 액세스 할 수있었습니다.

+0

이'user @ host /] $ sudo setsebool httpd_can_network_connect 1' 위 구문에서'='를 제거하십시오. 이것은 나를 위해 작동합니다. – jems