通过PHP下载文件

通过PHP下载文件,php,curl,cron,Php,Curl,Cron,我无法通过PHP下载文件 有趣的是我找不到问题所在。这段代码对某些网站很有效,而对其他网站则不太有效。PHP中的循环从网站下载备份文件(请求之前的睡眠会有延迟) 为什么我找不到问题? 因为当我手动运行代码时,它可以工作(下载文件)。当它由CRON运行时,有时下载文件,有时不下载文件(只下载两行新的空行) 下载时使用了curl(我还尝试了使用fsockopen和fread的不同代码) 有人知道我如何解决这个问题吗 通过设置正确的选项,可以使用CURL删除标题 function fetch_url(

我无法通过PHP下载文件

有趣的是我找不到问题所在。这段代码对某些网站很有效,而对其他网站则不太有效。PHP中的循环从网站下载备份文件(请求之前的睡眠会有延迟)

为什么我找不到问题? 因为当我手动运行代码时,它可以工作(下载文件)。当它由CRON运行时,有时下载文件,有时不下载文件(只下载两行新的空行)

下载时使用了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');
尝试使用显示有关curl请求的信息

echo curl_errno($c);
print_r(curl_getinfo($c));
另外,可能它在其他地方的代码中,但是我没有看到任何内容类型的头用于文件的回显

$file = fetch_url('http://www.example.com/zip.zip');
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="zip.zip"');
header("Content-length: " . strlen($file));
echo $file;
尝试使用显示有关curl请求的信息

echo curl_errno($c);
print_r(curl_getinfo($c));
另外,可能它在其他地方的代码中,但是我没有看到任何内容类型的头用于文件的回显

$file = fetch_url('http://www.example.com/zip.zip');
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="zip.zip"');
header("Content-length: " . strlen($file));
echo $file;

好啊非常感谢。安全问题:包含这些备份的Web服务器是否有办法授予您作为合法用户的访问权限?或者Joe Public是否下载这些备份的副本无关紧要?您应该使用curl_error并将其记录到txt文件或其他文件中,然后您将能够跟踪其不工作的原因,可能有各种原因(文件太大,主要超过2GB,头错误,数据损坏或不完整,gzip编码或超时)…记录每个curl请求并设置一些安全措施OK。非常感谢。安全问题:包含这些备份的Web服务器是否有办法授予您作为合法用户的访问权限?或者Joe Public是否下载这些备份的副本无关紧要?您应该使用curl_error并将其记录到txt文件或其他文件中,然后您将能够跟踪其不工作的原因,可能有很多原因(文件太大,主要超过2GB,标题错误,数据损坏或不完整,gzip编码或超时)…记录每个curl请求并设置一些安全措施。谢谢,我会尝试的。如果不起作用,我会用转储的信息再次发布问题。问题不在标题中,因为我实际上已将下载的内容保存到文件中。您好,谢谢。我会尝试一下。如果不起作用,我会用转储的信息再次发布问题。问题不在标题中,因为我实际上将下载的内容保存到了文件中。