cURL从有效URL返回空输出 - 未报告错误

时间:2011-12-01 12:04:49

标签: php curl

如果您只是在浏览器中输入网址,您可以看到两者都有效,即使没有javascript也可以使用cdon,他们是否以某种方式阻止了cURL?

我正在尝试建立一个刮刀来帮助合法的电影合法电影,这将使他们受益匪浅,似乎愚蠢的阻止刮刀一般imho。虽然我很不确定这里发生了什么!某处可能只是一个错误..

// Works
get_file1('http://sfanytime.com/sv-SE/Sokresultat/?field=all&q=The+Matrix', '/', 'sfanytime.html');

// Saves a blank 0 KB file
get_file1('http://downloads.cdon.com/index.phtml?action=search&search_terms=The+Matrix', '/', 'cdon.html');

function get_file1($file, $local_path, $newfilename) {
    $out = fopen($newfilename, 'wb');
    if ($out === FALSE) {
        return false;
    }      
    $ch = curl_init();             
    curl_setopt($ch, CURLOPT_FILE, $out);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_URL, $file);                  
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

    curl_exec($ch);
    $error = curl_error($ch);
    if (strlen($error) > 0) {
            echo "<br>Error is : ". $error;
        return false;
    }
    curl_close($ch);
    return true;
}

1 个答案:

答案 0 :(得分:3)

您应该更改

curl_setopt($ch, CURLOPT_FAILONERROR, true);

...到...

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

CURLOPT_FAILONERROR会导致“无声失败” - 从你所说的,不是你想要的。我用CURLOPT_FOLLOWLOCATION替换了它,因为当我访问第二个URL时,我被重定向到“选择你的国家”类型页面,这将是一个空体的响应 - 这就是为什么你得到一个空文件

您的代码没有问题,只是您处理来自第二个URL的响应的方式存在问题。您没有看到错误,因为从技术上讲,没有错误。