curl_exec()之后PHP cURL CURLOPT_FILE为空

时间:2014-07-03 11:45:27

标签: php curl download wget

我正在编写一个脚本,用于下载和扫描我尝试使用PHP cURL下载此示例页面的特定网页元素:

http://www.jetbull.com/Deposit

但是,每次我尝试curl_exec()时输出文件都是空的。有谁知道为什么这是或能够引导我解决这个问题?

我很容易在此功能中使用几乎任何其他网址,但这不会发生。

function download_page($url, $out_file = "body.txt") {

    $fp = fopen($out_file, "w");
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);    
    curl_setopt($ch, CURLOPT_FILE, $fp);

    curl_exec($ch);
    fclose($fp);
    $details = curl_getinfo($ch);
    curl_close($ch);

    return $details;
}

$url = "http://www.jetbull.com/Deposit";
download_page($url);

我在nix环境中运行PHP 5.2.6。 我可以清楚地看到页面将返回307,但我不确定为什么没有遵循重定向(如果这确实是问题)。

在Firefox中,此页面检索正常,报告的HTTP 200。 服务器是否以某种非标准的方式响应cURL没有处理,或者cURL没有正确地遵循重定向,否则我做其他事情只是愚蠢的?

任何有关如何解决此问题或引导我走上正轨的信息都将非常感激!

1 个答案:

答案 0 :(得分:3)

添加此选项

curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');