source

cURL 에러(7): 호스트에 접속할 수 없었습니다.

goodcode 2022. 9. 20. 23:58
반응형

cURL 에러(7): 호스트에 접속할 수 없었습니다.

아이템 코드를 cUrl(php)을 사용하여 xml 형식으로 웹 서비스에 보냅니다.localhost에서 올바른 응답을 얻었는데, 서버에서는 올바른 응답이 표시된다.

cURL 오류(7): 호스트에 연결할 수 없습니다.

제 코드는 다음과 같습니다.

function xml_post($post_xml, $url)
{
    $user_agent = $_SERVER['HTTP_USER_AGENT'];

    $ch = curl_init();    // initialize curl handle
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);          
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 50); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_xml); 
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
//  curl_setopt($ch, CURLOPT_PORT, $port);          

    $data = curl_exec($ch);
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    if ($curl_errno > 0) {
            echo "cURL Error ($curl_errno): $curl_error\n";
    } else {
            echo "Data received\n";
    }
    curl_close($ch);

    echo $data;
}

상품 코드를 집계에 보내서 상세 내용을 가져옵니다.php 4+와 php 5+ 버전을 모두 사용해 봤지만, 어떤 솔루션도 잘 되지 않습니다.

CURL 오류 코드 7(CURLE_CALNDT_CONNECT)

★★★★★★★★★★★★...,을 요.Failed to connect() to host or proxy.

다음 코드는 모든 시스템에서 작동합니다.

$ch = curl_init("http://google.com");    // initialize curl handle
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
print($data);

구글 페이지를 볼 수 없다면.. your URL is wrong 조금 있다.firewall ★★★★★★★★★★★★★★★★★」restrictiondisclossible을 클릭합니다.

어떤 이유로든 curl 요구가 방화벽 등에 의해 차단되면 "CURL ERROR 7 Failed to connect to Permission denied" 오류가 발생합니다.

컬 요구가 표준 포트에 없는 경우 이 문제가 발생합니다.

예를 들어 포트 1234에 있는 URL로 컬링하면 포트 80을 가진 URL을 통해 쉽게 결과를 얻을 수 있는 이 문제에 직면하게 됩니다.

이 오류는 CentOS 및 'SELINUX'를 사용하는 다른 OS에서 가장 일반적으로 볼 수 있습니다.

'SELINUX'를 비활성화하거나 허용으로 변경해야 합니다.

이것 좀 봐

http://www.akashif.co.uk/php/curl-error-7-failed-to-connect-to-permission-denied

도움이 되었으면 좋겠다

모든 방법을 시도했지만 실패했을 경우 다음 명령을 사용합니다.

setsebool -P httpd_can_network_connect on

PHP 에서는, 네트워크가 프록시인 경우.프록시 URL 및 포트를 설정해야 합니다.

curl_setopt($ch, CURLOPT_PROXY, "http://url.com"); //your proxy url
curl_setopt($ch, CURLOPT_PROXYPORT, "80"); // your proxy port number

이것으로 내 문제는 해결되었다

에는...cURL Error (7): ... Operation Timed Out회사 네트워크 연결을 사용하고 있습니다.몇 가지 환경변수를 만들어야 했어요.먹다'가 .

Linux 터미널의 경우:

$ export https_proxy=yourProxy:80
$ export http_proxy=yourProxy:80  

윈도우에서는 윈도우 방식으로 (같은) 환경변수를 만들었습니다.

도움이 됐으면 좋겠네요!

안부 전해 주세요!

브라우저나 PHP 스크립트로 그 URL을 찾을 수 있습니까?에러는, 접속할 수 없었습니다.따라서 먼저 URL에 액세스할 수 있는지 확인합니다.

포트 80 및 443이 차단되었는지 확인합니다.또는 IP graph.facebook.com 라고 입력하고 etc/filename 파일에 입력합니다.

또, 동시에 복수의 HTTP 요구를 사용해 같은 URL 에 액세스 하려고 해도, 이 정보를 얻을 수 있습니다.많은 컬 요구는 접속할 수 없기 때문에 에러와 함께 반환됩니다.

이 문제는 리모트디바이스에 설정되어 있지 않은 경우 https에 컬콜을 발신하는 경우에도 발생할 수 있습니다.이러한 상황에서는 적어도 리모트로 ssl을 설정할 때까지 http를 사용하여 이 문제를 해결할 수 있습니다.

이 문제는 사용하고 있는 호스팅 프로바이더가 IP 블록 내에서 발신된IP 블록 앞으로 HTTP 패킷을 차단하는 것이 원인입니다.믿을 수 없어!!!

며칠 동안 나는 이것에 대해 완전히 막혔다.저는 네트워킹/vms를 매우 처음이지만 호스팅 회사에 비용을 지불하지 않고 직접 셋업해 보고 싶었습니다.

맥락

php 루틴을 사용하여 내부 소스 및 지도 기반 앱의 외부 API에서 다양한 데이터를 반환하는 앱의 서버 측을 재구축하고 있습니다.Oracle VM 인스턴스를 시작하고 Apache 및 php를 설치/설정했습니다.php 루틴 중 하나가 cURL을 실행하려고 할 때까지 모든 것이 정상적으로 실행됩니다.오류 로깅을 구현하기 시작하면 위와 매우 유사한 구현임에도 불구하고 '7'이라는 메시지가 '7'만 표시됩니다.데이터를 얻기 위해 내부 파일에 액세스하는 내 php 루틴이 성공적으로 실행되었기 때문에 Apache나 php 문제가 아니라고 확신했습니다.아파치 에러 로그도 확인했지만 아무 말도 안 했어요

솔루션

거의 포기했습니다.상기 및 다른 기사에서는 SELinux를 무효로 하는 것에 대해 언급하고 있습니다.그것은 목적에 맞게 동작했습니다만, 여기 SELinux https://www.electronicdesign.com/technologies/embedded-revolution/article/21807408/dont-do-it-disabling-selinux를 무효로 하면 되는 이유에 대한 매우 좋은 기사가 있습니다.

일시적으로 무효로 할 수 있지만, 저처럼 하고 싶지 않은 경우(SELinux가 당신을 차단하고 있는 것을 확인), SELinux의 문제를 보다 읽기 쉬운 방법으로 출력하는 깔끔한 명령어를 발견했습니다.

sealert -a /var/log/audit/audit.log

이를 통해 다음 항목이 반환되었습니다.


found 1 alerts in /var/log/audit/audit.log
--------------------------------------------------------------------------------

SELinux is preventing php-fpm from name_connect access on the tcp_socket port 443.

좋아요, 이제 '7'보다 더 많은 정보를 얻었네요.아래를 읽어보면 실제로 제안사항이 있음을 알 수 있습니다.

*****  Plugin catchall_boolean (24.7 confidence) suggests   ******************

If you want to allow httpd to can network connect
Then you must tell SELinux about this by enabling the 'httpd_can_network_connect' boolean.

Do
setsebool -P httpd_can_network_connect 1

이것은 위에서 더 많이 언급되었지만, 이제 나는 그것이 하는 일에 대해 좀 더 많은 문맥과 설명을 가지고 있다.난 지휘부를 지휘하고 사업을 하고 있어게다가 SELinux는 아직 강제적으로 설정되어 있기 때문에 머신의 안전성이 향상됩니다.

로그아웃된 다른 제안이 많이 있습니다.차단된 경우 /var/log/audit/audit.log를 로그아웃/체크아웃하는 것이 좋습니다.

언급URL : https://stackoverflow.com/questions/9922562/how-to-resolve-curl-error-7-couldnt-connect-to-host

반응형