2012-04-19 23 views
0

PHP経由でファイルをダウンロードする際に問題があります。PHP経由でファイルをダウンロード

面白いことに、私は問題を追跡できません。このコードは一部のWebサイトではうまく動作し、他のサイトではうまく機能しません。ウェブサイトからバックアップファイルをダウンロードするのはPHPのループです(リクエストの前にスリープに遅れがあります)。

なぜ私は問題を追跡できませんか? コードを手動で実行すると、そのコードが機能します(ファイルをダウンロードします)。 CRONによって実行されると、ファイルをダウンロードすることもありますが、ファイルをダウンロードしないこともあります(空の新しい行を2つだけダウンロードします)。

ダウンロードはcurlで行います(私はfsockopenとfreadで別のコードを試しました)。

誰も私がこれをどのように解決できるか考えていますか?

正しいオプションを設定すると、ヘッダーがCURLで削除されます。

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

セキュリティに関する質問:これらのバックアップを含むWebサーバーには、正当なユーザーとしてのアクセスを許可する方法がありますか?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

関連する問題