Just avoid and add some code to work for large file
<?php
$filename = "theDownloadedFileIsCalledThis.mp3";
$myFile = "/absolute/path/to/my/file.mp3";
$ext=strtolower(substr($fl,strrpos($myFile,".")));
$mime_types = array(
'.txt' => 'text/plain',
'.htm' => 'text/html',
'.html' => 'text/html',
'.php' => 'text/html',
'.css' => 'text/css',
'.js' => 'application/javascript',
'.json' => 'application/json',
'.xml' => 'application/xml',
'.swf' => 'application/x-shockwave-flash',
'.flv' => 'video/x-flv',
'.png' => 'image/png',
'.jpe' => 'image/jpeg',
'.jpeg' => 'image/jpeg',
'.jpg' => 'image/jpeg',
'.gif' => 'image/gif',
'.bmp' => 'image/bmp',
'.ico' => 'image/vnd.microsoft.icon',
'.tiff' => 'image/tiff',
'.tif' => 'image/tiff',
'.svg' => 'image/svg+xml',
'.svgz' => 'image/svg+xml',
'.3gp' => 'video/3gpp',
'.3g2' => 'video/3g2',
'.avi' => 'video/avi',
'.mp4' => 'video/mp4',
'.asf' => 'video/asf',
'.mov' => 'video/quicktime',
);
if (array_key_exists($ext, $mime_types)){
$mm_type=$mime_types[$ext];
}else{
$mm_type="application/octet-stream";
}
$mm_type="application/octet-stream";
header("Cache-Control: public, must-revalidate"); header("Pragma: public"); header("Pragma: hack"); header("Content-Type: " . $mm_type);
header("Content-Length: " .(string)(filesize($myFile)) ); header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Length: ' . filesize($myFile)); header("Content-Transfer-Encoding: binary\n");
ob_clean(); readfile($myFile);
?>
It should be work fine now.