2011-05-10 4 views
3

cURL을 사용하여 내 서버 (설치된 이메일 마케팅 프로그램)에있는 파일에 액세스하는 PHP 스크립트가 있습니다. 내 cURL 설치를 테스트하는 빠른 스크립트를 작성했고 내 서버의 파일을 가리킬 때 실패합니다. 스크립트는 다음이 코드를 실행하면 오류가 반환PHP 컬이 자체 서버의 호스트에 연결할 수 없습니다.

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://www.mysite.com/test.php"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$contents = curl_exec($ch); 

if($contents) { 
    echo $contents; 
} else { 
    $err = curl_error($ch); 
    echo $err; 
} 

curl_close($ch); 

: 내가 에 URL을 변경 http://www.google.com 경우

호스트에 연결할 수 없습니다 또는 다른 사이트에서는 정상적으로 작동합니다. 또한 다른 서버에서 cURL을 통해 특정 페이지를 열려고 할 때처럼 작동해야합니다. 이 테스트에서 가정하고있는 것은 PHP cURL이 설치되어 있고 (일종의) 작동 중이며 열려고하는 페이지에 문제가 없다는 것입니다.

포트 문제 일 수 있다고 생각하여 동일한 결과 (호스트에 연결하지 않음)로 포트를 지정하려고했습니다. 나는 열려있는 것으로 알고있는 포트를 지정하기 위해 curl_setopthttp://www.mysite.com:80/을 시도했다.

이것은 아파치 설치에 문제가 있다고 생각합니다.하지만 저는 아파치 전문가가 아니며 하루 종일 구글을 상대로 아무런 소용이 없습니다. 특정 cURL 오류를 일으킬 수있는 아이디어는 무엇입니까?

+0

혹시이 문제를 해결 했습니까? 난 정확히 같은 문제가 브라우저에서 액세스 할 때 내 자신의 서버에 스크립트를 잘 작동하지만 오류가 7 실패하면 하위 도메인에서 액세스 할 cURL 실행할 때. – Chud37

답변

0

웹 브라우저에서 http://www.mysite.com/test.php을 열어 봅니다. 작동하는 경우 문제는 cURL입니다. 그렇지 않다면 문제는 네트워크 또는 아파치 설정과 관련이있다.

아파치 구성이 시스템에서 실행 중인지 확인하여 확인할 수 있습니다. 그런 다음 명령 줄에서 telnet <apache server ip> 80을 시도하십시오. 연결되면 다음을 시도해보십시오.

GET /test.php HTTP/1.1 
Host: www.mysite.com 
<2 line breaks> 

apache에서 응답을 받으면 네트워크 문제가있는 것 같습니다. mysite.com이 아파치 서버의 IP 주소를 확인하고 포트 80 트래픽이 서버에 도착할 수 있는지 확인하십시오. 라우터의 루프백 라우팅 문제 일 수도 있습니다 (귀하의 아파치 상자가 라우트 된 네트워크 연결 뒤에 있다고 가정 할 때 동일한 연결).

1

www.mysite.com 할 수 있습니까?

/etc/hosts를 확인하십시오 ... www.mysite.com에 대해 잘못된 IP가 지정되었을 수 있습니다.

1

내 도메인 이름이 서버에서 해결되지 않아서 CURL 요청 자체가 실패하는 동일한 문제가 발생했습니다.

내 웹 서버가 방화벽 규칙 (서버의 트래픽을 차단하는 웹 서버 앞에로드 밸런서가 있음)으로 인해 스스로 해결할 수 없다는 것이 문제였습니다. 로컬에 도메인 이름을 매핑/etc/hosts 파일이 서버에 파일을 업데이트

$ curl -I http://www.mywebserver.com curl: (7) couldn't connect to host

: 내 서버

curl -I http://www.mywebserver.com에서 다음 명령을 실행 즉

는 결과 IP 주소가 문제를 해결했으며 내 스크립트 내의 fopencurl이 다시 작동합니다.

+0

나는이 질문을 알고있다. 이것이 머리카락을 당기는 날 이후에 나를 위해 일했던 해결책 인 것처럼 당신에게 upvote를주고 싶었습니다. –

0

원격 웹 서버에서도이 문제가 발생했습니다. 이 컴퓨터에서 컬을 실행하면 동일한 컴퓨터에서 아파치 서버가 호스팅하는 파일에 액세스 할 수 없습니다. 이상한 이것은 내가 작동하지 않았다

curl -O http://example.com/file1.txt 

하지만

curl -0 http://sub.example.com/file1.txt 

에 의해 파일에 액세스 할 수 있었다.

필자는 누락 된 DNS 레코드를 컴퓨터에서 실행중인 DNS 서버에 추가하여 해결했습니다. nslookup 등이 먼저 다른 사람에게 물어보기 전에 로컬 DNS 서버를 살펴보십시오. 그리고 로컬 DNS 서버가 "찾을 수 없습니다"라고 응답함에 따라 curl 포기.

관련 문제