我试图从https URL下载带验证的.xml.gz文件。PHP Curl从https URL下载空文件(.gz)
这是我目前的代码。
$remote_file = 'https://path/filename.xml.gz';
$local_file = "test.xml.gz";
$username ="21";
$password ="qwerty";
$ch = curl_init($remote_file);
$headers = array('Content-type: application/x-gzip','Connection: Close');
$fp = fopen ($local_file, 'wb');
curl_setopt($ch, CURLOPT_URL,$remote_file);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
$data = curl_exec($ch);
if(fwrite($fp,$data))
{
echo "success";
}
else
{
echo "fail";
}
curl_close($ch);
fclose($fp);
执行后,test.xml.gz文件被创建,但是为空。
我认为问题在于连接到https页面中的文件。当我尝试从非https网址下载文件时,代码似乎工作正常。
奇怪的是,卷曲显示没有错误任何
@ Heru-Luin好点,更正! – Ashley
嗨,我也试过。似乎没有工作。我已更新问题详细信息中的代码 –
如果输出$ data的内容,您会得到什么?另外,看看你是否使用curl_error($ ch)得到卷曲错误将是一个不错的选择。 – Ashley