次のコマンドでzipファイルを強制的にダウンロードするようにヘッダーを設定する小さなスクリプトがあります。
if(ini_get('zlib.output_compression')) {
ini_set('zlib.output_compression', 'Off');
}
header("Pragma: public");
header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="'.$mp3.'"');
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".@filesize($file));
@readfile($file) OR die("<html>...</html>");
exit;
ChromeとFirefoxではすべて正常に動作しますが、IE 9では失敗します。グーグルした後、これらのヘッダーを設定するさまざまな方法を試しましたが、何も役に立ちません。次に、別の小さなzipファイルを試してみましたが、うまくいきました。次に、より大きなzipファイルを試しましたが、再び失敗しました。これはサーバーまたはphp.iniなどの設定でしょうか?IEにのみ影響するのはなぜですか?
IEで失敗すると、ダウンロードしたように見えます。完了したと表示されます。ただし、ファイルは0バイトです。
助けてくれてありがとう!