我在通过 PHP 下载文件时遇到问题。
有趣的是,我无法追踪问题。该代码适用于某些网站,但不适用于其他网站。它是 PHP 中的循环,用于从网站下载备份文件(请求前有睡眠延迟)。
为什么我无法追踪问题?因为当我手动运行代码时,它可以工作(下载文件)。当它由 CRON 运行时,有时它会下载文件,有时它不下载文件(只下载 2 个空的新行)。
使用 curl 下载(我也尝试使用 fsockopen 和 fread 使用不同的代码)。
有谁知道我该如何解决这个问题?
通过设置正确的选项,使用 CURL 删除标题。
function fetch_url($url) {
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_TIMEOUT, 20);
if ($cookiejar != '') {
curl_setopt($c, CURLOPT_COOKIEJAR, $cookiejar);
curl_setopt($c, CURLOPT_COOKIEFILE, $cookiejar);
}
curl_setopt($c, CURLOPT_HEADER , false);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST , false);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER , false);
curl_setopt($c, CURLOPT_FOLLOWLOCATION , true);
curl_setopt($c, CURLOPT_AUTOREFERER , true);
curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12');
$con = curl_exec($c);
curl_close($c);
return $con;
}
echo fetch_url('http://www.example.com/zip.zip');