PHP下载脚本在IE8中抛出错误

PHP下载脚本在IE8中抛出错误,php,internet-explorer-8,download,Php,Internet Explorer 8,Download,所以我通读了所有IE下载脚本错误,并尝试了几乎所有的解决方案。这是我最终得到的代码,但是它仍然不能解决我的问题 我的链接如下: 我的下载脚本在我尝试过的每个浏览器中都能正常工作。然而,当我在一台新机器上或在清除缓存的情况下在IE8中测试时,第一次尝试下载时,我会得到:“IE无法从example.com下载文件download.php…” 现在,如果我再次点击回车键,文件下载就完美了。没有问题,找到文件并可下载。但是,如果我清除缓存,或者在实验室的另一台机器上用IE8尝试它,我以前没有用过,它会在

所以我通读了所有IE下载脚本错误,并尝试了几乎所有的解决方案。这是我最终得到的代码,但是它仍然不能解决我的问题

我的链接如下:

我的下载脚本在我尝试过的每个浏览器中都能正常工作。然而,当我在一台新机器上或在清除缓存的情况下在IE8中测试时,第一次尝试下载时,我会得到:“IE无法从example.com下载文件download.php…”

现在,如果我再次点击回车键,文件下载就完美了。没有问题,找到文件并可下载。但是,如果我清除缓存,或者在实验室的另一台机器上用IE8尝试它,我以前没有用过,它会在第一次抛出错误。只是第一次,然后就没事了。我在扯头发,请帮忙。这是我的密码

//ini_set('error_reporting', E_ALL);
//ini_set('display_errors', 1);
set_time_limit(0);

$filepath = '/var/www/html/securitycoverage.com/scportal/redirect/www.securitycoverage.com/main/pages/';

$filename = $filepath.$_GET['file'];

if (!is_file($filename)) {
  die('The file appears to be invalid.');
}

$filepath = str_replace('\\', '/', realpath($filename));
$filesize = filesize($filepath);
$filename = substr(strrchr('/'.$filepath, '/'), 1);
$extension = strtolower(substr(strrchr($filepath, '.'), 1));

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.sprintf('%d', $filesize));
header('Expires: 0');

// check for IE only headers
if (isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)) {
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  header('Pragma: public');
} else {
  header('Pragma: no-cache');
}

$handle = fopen($filepath, 'rb');
fpassthru($handle);
fclose($handle);

您的代码中有一个错误。使用

$mime = array('application/octet-stream');
header('Content-Type: '.$mime[0]);


我根据您的建议更改了内容类型,但是在清除缓存后我看到的错误中没有任何区别。可能问题是Apache正在尝试压缩输出,因此添加:@Apache_setenv('no-gzip',1);@ini_set('zlib.output_compression',0);也许是个愚蠢的问题,但我该把它放在哪里呢?我把它放在最上面的是被评论掉的ini_集,有和没有@,但这两个都没有区别。
header('Content-Type: application/octet-stream');