In PHP sieht man oftmals nur sowas (sehr oft ohne Content-Length, Content-Disposition usw.),
Code:
header("Content-Type: $type");
header("Content-Disposition: attachment; filename=\"$file\"");
readfile($dir.$file);
Dieser PHP Code ist leider einer der meist genutzten. Doch leider gehen hier viele Funktionen wir HTTP-Range usw. nicht. Die Browser, wie du schon schreibst, haben Aufgrund der fehlenden Header auch so ihre Probleme.
Ich würde die Datei auf jedenfalls NICHT durch ein Script ausliefern lassen, es sein denn man weiß zu 100% was man da tut.
Der Webserver kann das meist besser und hat auch die passenden Unterstützungen wie Range etc.