2012-04-19 6 views
0

PHP를 통해 파일을 다운로드하는 데 문제가 있습니다.PHP를 통해 파일 다운로드

재미있는 점은 문제를 추적 할 수 없다는 것입니다. 이 코드는 일부 웹 사이트에서는 좋지만 다른 사이트에서는 좋지 않습니다. 웹 사이트에서 백업 파일을 다운로드하는 것은 PHP의 루프입니다 (요청 전에 잠자기 지연이 있음).

왜 문제를 추적 할 수 없습니까? 수동으로 코드를 실행하면 작동합니다 (파일 다운로드). CRON에 의해 ​​실행될 때 파일을 다운로드하는 경우가 있습니다. 파일을 다운로드하지 않는 경우도 있습니다 (빈 행 2 개만 다운로드).

다운로드가 curl로되어 있습니다 (fsockopen 및 fread로 다른 코드로 시도했습니다).

아무도 내가 이것을 해결할 수있는 아이디어가 있습니까?

머리글은 올바른 옵션을 설정하여 머리글을 사용하여 제거됩니다.

function fetch_url($url) { 
    $c = curl_init(); 
    curl_setopt($c, CURLOPT_URL, $url); 
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($c, CURLOPT_TIMEOUT, 20); 

    if ($cookiejar != '') { 
     curl_setopt($c, CURLOPT_COOKIEJAR, $cookiejar); 
     curl_setopt($c, CURLOPT_COOKIEFILE, $cookiejar); 
    } 

    curl_setopt($c, CURLOPT_HEADER , false); 
    curl_setopt($c, CURLOPT_SSL_VERIFYHOST , false); 
    curl_setopt($c, CURLOPT_SSL_VERIFYPEER , false); 
    curl_setopt($c, CURLOPT_FOLLOWLOCATION , true); 
    curl_setopt($c, CURLOPT_AUTOREFERER , true); 
    curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12'); 
    $con = curl_exec($c); 
    curl_close($c); 
    return $con; 
} 

echo fetch_url('http://www.example.com/zip.zip'); 
+0

확인. 고마워요. – BetterMan21

+0

보안 질문 : 해당 백업이 포함 된 웹 서버에서 합법적 인 사용자로 액세스 권한을 부여 할 수 있습니까? 아니면 Joe Public이 이러한 백업 사본을 다운로드해도 문제가되지 않습니까? – halfer

+0

curl_error를 사용하여 txt 파일 등에 로그 한 다음 작동하지 않는 이유를 추적 할 수 있어야합니다 (2GB를 초과하는 너무 큰 파일, 잘못된 헤더, 부패 또는 불완전한 데이터, gzip 등) 인코딩 또는 타임 아웃) ... 모든 컬 요청을 기록하고 보안을 설정합니다. –

답변

3

또한
echo curl_errno($c); 
print_r(curl_getinfo($c)); 

는, 아마 다른 곳에서 코드에서의 컬 요청에 대한 정보를 표시 할 수 http://www.php.net/manual/en/function.curl-getinfo.php를 사용하여 시도,하지만 난 파일

당신의 에코에 대한 어떤 콘텐츠 유형 헤더를 확인할 수 없습니다
$file = fetch_url('http://www.example.com/zip.zip'); 
header('Content-type: application/zip'); 
header('Content-Disposition: attachment; filename="zip.zip"'); 
header("Content-length: " . strlen($file)); 
echo $file; 
+0

안녕하세요, 감사합니다. 작동하지 않으면 덤프 된 정보와 함께 질문을 다시 게시합니다. – BetterMan21

+0

실제로 다운로드 한 내용을 파일에 저장하기 때문에 문제가 헤더에 없습니다. – BetterMan21

관련 문제