PHP ERR_EMPTY_RESPONSE // Fehler beim Download von Dateien mit bestimmter Dateigröße

-]Dr.OeTz![-

Lt. Junior Grade
Registriert
Nov. 2009
Beiträge
509
Hallo,

wenn ich mit folgendem Script einen Download generiere, bekomme ich die Fehlermeldung ERR_EMPTY_RESPONSE im Browser angezeigt.

PHP:
        if(!isset($_GET['param'])){
	        echo "falscher Parameter - ABBRUCH";
	        exit;
        }


	$gallerie = 'downloads/';
		
	

	$filename = $_GET['param'].$_GET['quality'].'.zip';
	$filepath = $gallerie;
	
	$filesize = sprintf("%u", filesize($filepath.$filename));							

	
	header("Pragma: public");
	header("Expires: 0");
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	header("Cache-Control: public");
	header("Content-Description: File Transfer");
	header("Content-type: application/octet-stream");
	header("Content-Disposition: attachment; filename=\"".$filename."\"");
	header("Content-Transfer-Encoding: binary");
	header("Content-Length: ".$filesize);
	@ob_end_flush();
	@readfile($filepath.$filename);

Der Fehler tritt ausschließlich bei Dateien mit rund 300MB auf. Ich kann mir überhaupt keinen Reim daraus machen und auch die Suche bei google war erfolglos

Der Pfad zur Datei ist definitiv korrekt - denn nehme ich eine Datei mit gleichem Dateinamen aber anderer Größe, läuft der Download des ZIP-Archivs einwandfrei

Hat jemand ne Idee wo ich ansetzen sollte?
 
Die @ Zeichen unterdrücken Fehler die vielleicht auftreten!
Tritt der Fehler bei Dateien ab 300MB auf oder nur bei ca. 300MB und größere Dateien gehen wieder?
 
Was wird'n groß sein? Das PHP-Script wird wahlweise seine Laufzeit oder seinen RAM überschreiten. Evtl. auch beides.
Mach die @'s weg und schreib etwas Code um Fehler abzufangen.
 
Also ich habe auch Files, die deutlich über 1GB sind und das läuft einwandfrei... alle Dateien mit rund 300-400MB laufen nicht. die @ wegmachen bringt leider keinen Unterschied - gleicher Fehler

Das mit dem Header bringt leider auch keinerlei Änderung

Ich kann es echt nicht nachvollziehen...

Er wirft halt auch keinen Fehler, einfach nur ERR_EMPTY_RESPONSE - das wars
 
Zuletzt bearbeitet:
readfile() hat einen Rückgabewert: die Dateigröße
Schreib den Kram doch mal in eine Logdatei, zusammen mit dem Dateinamen udn deiner erwarteten Dateigröße. Dann siehst du eventuelle Abweichungen schon.
 
Zurück
Oben