CURL不使用PHP中的链接,但在命令行中它

时间:2016-03-15 20:12:24

标签: php url curl download

我的PHP脚本使用CURL时出现问题。我想从另一台服务器下载文件(可能有热链接保护)。 URL如下所示:example.com/script.extension?id=12345&type=xxx&another=qwerty

当我从我的网站点击该链接时,它会在标题中发送“Referer:”,因此下载无法启动。 (没有它的标题)

我必须修改文件的名称,所以我使用CURL将其下载到我的服务器。当我使用该脚本执行该操作时,会创建该文件,但该文件为空:

function my_function($the_url) {

    $fp = fopen ('tmp_file.extension', 'w+');

    $user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';

    $options = array(
        CURLOPT_VERBOSE        => 1,
        CURLOPT_URL            => $the_url,
        CURLOPT_CUSTOMREQUEST  => "GET",       
        CURLOPT_POST           => false,       
        CURLOPT_USERAGENT      => $user_agent, 
        CURLOPT_RETURNTRANSFER => true,   
        CURLOPT_HEADER         => false,  
        CURLOPT_FOLLOWLOCATION => true, 
        CURLOPT_ENCODING       => "",      
        CURLOPT_AUTOREFERER    => false,
        CURLOPT_REFERER        => "http://example.com/",    
        CURLOPT_CONNECTTIMEOUT => 120,     
        CURLOPT_TIMEOUT        => 120,      
        CURLOPT_MAXREDIRS      => 10,       
    );

    $ch = curl_init();
    curl_setopt_array($ch, $options);
    $my_exec = curl_exec($ch);
    fwrite($fp, $my_exec);
    curl_close($ch);
    fclose($fp);

}

但它适用于我网站上托管的文件(例如mysite.com/file.zip)

另外,当我通过shell运行命令时: $ curl -L -o file.tmp --referer http://example.com/ 这里的完整网址 它正确下载了文件。

我的PHP函数无法做到这一点的原因是什么?

0 个答案:

没有答案