io in genere uso questi e non ho mai avuto problemi:

codice:
      header("Expires: Mon, 12 Jul 1976 06:20:00 GMT");
      header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

      header("Cache-Control: no-store, no-cache, must-revalidate");
      header("Cache-Control: post-check=0, pre-check=0", false);

      header("Pragma: no-cache");

      header('Content-type: application/octet-stream');
      header('Content-Disposition: attachment; filename="'.basename($nomefile).'"');
      readfile($nomefile);