Klaus: Upload großer Dateien ohne Fehlermeldung?

Beitrag lesen

Hallo,

über ein Upload-Script soll der Benutzer in der Lage sein, auch große Dateien auf den Server hochzuladen.
Bei kleineren Dateien (kleiner als 1GB) funktioniert noch alles, aber bei Dateien mit bspw. 1,3GB gibt die Funktion move_uploaded_file FALSE zurück, aber keine Fehlermeldung.
Weder in der error.log noch im Eventlog des Servers ist etwas zu sehen.

Das Formular hierzu ist denkbar einfach:

  
			<form name="upload" enctype="multipart/form-data" method="post">  
				<input type="hidden" name="<? echo ini_get("session.upload_progress.name"); ?>" value="upload" />  
				<input type="hidden" name="MAX_FILE_SIZE" value="5120000" />  
				<label for="fileupload">Datei, die verschickt werden soll:</label>  
				<input type="file" id="fileupload" name="fileupload" size="30" required="required" multiple  onchange="fileChange();" />  
				<br/>  
				<input class="button" type="button" value="Datei hochladen" onClick="fileUpload();" />  
			</form>  
  

Das dazugehörige Javascript ruft im Grunde nur das PHP-Script auf: (den Schnickschnack mit dem Upload-Balken hab ich hier mal weggelassen.)

  
function fileUpload() {  
	var file = document.getElementById("fileupload").files[0];  
	if (!file) {  
		return;  
	}  
	var formdaten = new FormData(document.upload);  
	var fileList = document.getElementById("fileupload").files;  
	for(var i =0; i < fileList.length; i++) {  
		var file = fileList[i];  
		formdaten.append("datei"+i, file);  
	}  
	req.onload = function(e) {  
		result = req.responseText;  
	        document.getElementById("fortschritt_txt").innerHTML = result;  
	}  
	url = 'upload.php';  
	req.open('post', url, true);  
	req.send(formdaten);  
}  

Das PHP-Script prüft, ob das Verzeichnis und die Berechtigung noch vorhanden ist.

  
	$anz_uploads = sizeof($_FILES) -1;  
  
	if (file_exists("/upload/files/") && is_writable("/upload/files/")) {  
		for ($i = 0; $i < $anz_uploads; $i++) {  
			$xdatei = "datei".$i;  
			$name = basename($_FILES[$xdatei]['name']);  
			$dateiname = "/upload/files/".$name;  
			$tmpname = $_FILES[$xdatei]['tmp_name'];  
			$erfolg = move_uploaded_file($tmpname, $dateiname);  
			if (!$erfolg) {  
				echo "Warning! Datei wurde nicht korrekt hochgeladen!";  
			}  
		}  

Früher waren noch ein paar PHP.ini Einträge zu niedrig gesetzt und da gabs wenigstens auch eine Warnung zurück.

Hier die (ich denke) relevanten Einträge:
file_uploads=On
upload_tmp_dir="C:\xampp\tmp"
upload_max_filesize=5G
max_file_uploads=50
post_max_size=0
max_execution_time=1200
max_input_time=60
memory_limit=-1
error_reporting=E_ALL & ~E_NOTICE

Gibt es sonst noch wo ein Rädchen zu drehen, damit auch wirklich große Uploads funktionieren?

Klaus