我的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函数无法做到这一点的原因是什么?