Was hat denn die Dateigröße damit zu tun? Du sagtest doch selber das (so entsprechend konfiguriert) direkt zur entsprechenden Datei verlinkt ist.
1. Wenn die Datei grösser als das PHP-Speicherlimit ist, wird die readfile_chunked-Funktion angesprochen, sofern im MOD eingestellt. Diese liest aber auch die Datei in den Speicher und irgendwann ist der dann eben voll.
2. Du musst das einstellen! In der Konfiguration zur MOD ist dafür der Haken bei "direkt" zu setzen. Mit diesem Haken werden
alle Downloads, die über dem PHP-Speicherlimit liegen, direkt verlinkt an den Browser geschickt.
Wenn Du nun allerdings das Speicherlimit so groß gewählt hast, daß damit bereits ein Timeout ausgelöst wird, kann ich auch nichts machen.
Bedenke, daß das Laden einer Datei über die chunked-Funktion Zeit kostet, da häppchenweise abgearbeitet wird. Und Zeit ist ja genau das, was bei Dir nun zu einem Fehler führt
Zur Erklärung:
Die chunked-Funktion liest einen Teil der betreffenden Datei und schickt sie dem User als Download-Teil. Dann der nächste Teil und das bis zum Ende.
Bei Dateien, die damit innerhalb des Timeout-Limits liegen, ist das auch kein Thema, bei wirklich grossen Dateien geht es eben nicht mehr, da der Download dabei immer noch zum PHP-Timeout-Limit zählt. Dann funktioniert wirklich nur noch mit Direktverlinkung!!
Nichts anderes machen auch alle anderen Download-Seiten, wenn extrem grosse Dateien heruntergeladen werden sollen: Sie werden direkt verlinkt an den Browser des Users geschickt, wobei dann kein Script und Timeout mehr stören kann.
Und sobald dann der betreffende Dateityp noch mit einem Programm verknüpft ist (z. B. PDF-Dokumente) kann dann meist auch nur direkt in den PDF-Viewer (z. B. Acrobat Reader) geladen werden. Der einzigste echte Nachteil hierbei.