2012-07-17 4 views
3

PHP를 사용하여 xml 파일을 다운로드해야합니다. curl 호출을 할 때 다음 옵션을 설정하여 파일의 내용을 읽을 수 있습니다. 내가 VERIFYHOST 거짓해야하고 또한 전화를 걸 때 파일이 공개적으로 액세스 할 수 없습니다 만 특정 응용 프로그램이 전화를 걸 수 있기 때문에 파일을 읽을 명시 적 USERAGENT을 설정해야 위의 코드에서 분명하게 알 수 있듯이PHP를 사용하여 https를 통해 파일을 다운로드하는 방법

curl_setopt ($http, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt ($http, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($http,CURLOPT_USERAGENT,'XYZ'); 

그러나 어떻게 동일한 파일을 다운로드합니까? 시도했습니다. , fopen/fpassthru, file_get_contents 아무 것도 작동하지 않는 것 같습니다. ReadFile을 오류 failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden

fopen 또는 readfile과 옵션 같은 컬을 제공하는 방법이 있나요에게 제공, 그게이 문제를 해결하는 가장 쉬운 방법이 될 수있다 생각합니다. 나는 PHP 문서에서 많은 도움을 찾을 수 없었다.

도와주세요.

+0

당신은 "당신"에 대한 헤더와 물건을 제공하고 있는가? –

+0

@ DavidBélanger 보통'Content-disposition'과'Content-type' 헤더 만 있습니다. – Harshdeep

+0

당신에 관한 헤더를 보내야합니다 : UserAgent와 IP Address. –

답변

3

특수한 사용자 에이전트를 스트림 컨텍스트에 연결해야합니다. http://www.php.net/manual/en/wrappers.http.php

에서

는 읽기 전용 수 있도록 허용 HTTP 1.0을 통해 파일/리소스에 대한 액세스를, HTTP GET 메소드를 사용하여. 이름 기반 가상 호스트를 처리하라는 요청과 함께 Host : 헤더가 전송됩니다. user_agent string using your php.ini file 또는 스트림 컨텍스트를 구성한 경우 요청에도 포함됩니다. 위의 링크에서

예 2 :

<?php 
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo"); 

$fp = fopen('http://www.example.com/index.php', 'r'); 
?> 
+0

감사합니다'ini_set' 트릭을했습니다. – Harshdeep

관련 문제