Upload Timeout trotz korrekter ini Einstellungen

Kahmoon

Erfahrenes Mitglied
Tach beisammen,

michse hat ein Problem. Ich hab seit längerem ein Uploadscript für Bilder laufen, das auch problemlos funktioniert. Bisher war es noch durch upload_max_filesize auf 5 Files auf einmal begrenzt. Da mein Provider jetzt upload_max_filesize 200M hat würde ich die Anzahl gern erweitern. Leider bricht er mir bei z.B. 10 Feldern nach 4 oder 5 Bildern ab. max_execution_time habe ich auf 600. Mit set_time_limit() 600 und 0 hab ich es auch schon versucht. Mit letzterem läuft das Script zwar länger...aber mehr als 5 Dateien läd er auch nicht hoch. Es gibt keine weiteren Begrenzungen die die Anzahl der hochgeladenen Dateien erklären würde. Es geht einfach ein foreach durch das input File Array.

Welche Einstellungen könnte ich noch vornehmen? Timeouts etc. hab ich doch alle auf Vorrat hochgestellt!?

post_max_size = 200M
upload_max_filesize = 200M
max_input_time = -1

Hier mal temporär meine phpinfo -> http://www.root54.de/phpinfo.php
 
Zuletzt bearbeitet:
Was kommt denn letztendlich als Fehler?

Zudem würde ich dir nicht zu einem set_timeout(0) raten, setze es lieber bei jeden File neu hoch.

Des weiteren... gab es nicht noch eine einstellung der MAX_POST_SIZE im Apache? Zusätzlich zu der Upload Size?

Aber wenn du wirklich viele Files hochladen willst ist eben FTP oder ein Java Uploader wesentlich besser geeignet. Das Läd auch sehr viel schneller hoch da die Daten nicht Base64 Kodiert werden müssen. Und sehr viel weniger Overhead erzeugt wird.
 
Es kommt kein Fehler...er macht einfach weiter als wenn nichts wäre. Hochgeladen wurden von 10 Dateien aber nur 5. HTML Quelltext ist auch ok. Verstehe es selbst nicht.

Die Versuche mit set_time_limit(0) waren nur zum Test. Am Ende soll es so sicher nicht bleiben.

Das Problem ist...ich kann keine Apache Einstellungen vornehmen. Meine Seite liegt bei einem Provider. Sprich ich kann nur mit ini_set etwas entgegenwirken.

So viele Dateien sind es eigentlich nicht. Bisher wurde immer 5er weise Bilder hochgeladen. Insgesamt meist 20-30 pro Event. Da ging es auf diesem Wege. Habe noch nicht wirklich einen Uploader gefunden der mir getaugt hat. Das jetzige Script ist komplett selbst gestrickt. Kann man diese Base64 Konvertierung verhindern?
 
Zuletzt bearbeitet:
Hallo @Kahmoon

Hab jetzt mal beim Überblicken der phpinfo auf die Schnelle nichts gesehen-
Kannst du uns mal ein bisschen mehr Code liefern ?
Ein Teil des Formulars und ein bisschen vom Script.

Was Michael glaube ich meinte ist das hidden field im Formular "MAX_FILE_SIZE", von Apache gebraucht wird.


Grüße simon
 
Hmm das mit dem MAX_FILE_SIZE im Form werde ich mal schauen. Was für einen Wert trage ich hier ein?

Hier ein bisschen Code. Formular mit 5 Uploadfeldern

HTML:
<form action="" method="post" enctype="multipart/form-data" onsubmit="showProgress();">
<p><input type="file" name="fupload[]" /></p>
<p><input type="file" name="fupload[]" /></p>
<p><input type="file" name="fupload[]" /></p>
<p><input type="file" name="fupload[]" /></p>
<p><input type="file" name="fupload[]" /></p>
<input type="submit" name="Submit" value="Bilder hochladen" /><br />
</form>
und hier ein Auszug der PHP Funktion

PHP:
foreach($_FILES["fupload"] as $data)
{
	#Prüfen ob die Datei mittels POST hochgeladen wurde
	if(is_uploaded_file($_FILES["fupload"] ["tmp_name"][$i])){
		if($_FILES["fupload"] ["size"][$i] != 0){
			#Prüfen ob die hochgeladene Datei erlaubt ist
			if($_FILES["fupload"] ["type"][$i] == "image/pjpeg"  ||    $_FILES["fupload"] ["type"][$i] == "image/jpeg"){
				#Prüfung ob Dateigrößenmaximum eingehalten wurde
				if($_FILES["fupload"] ["size"][$i] <= $max_filesize_bild){
					#Hashwert erzeugen
					$hashwert = md5_file($_FILES["fupload"] ["tmp_name"][$i]);
					
					#Prüfung ob das File bereits in der Datenbank vorhanden ist
					$query = "SELECT * FROM root54_galerie_images WHERE hashwert='".$hashwert."';";
					$check = new SQLQuery($query);

					if($check->numRows() == 0){
						
						  #Wenn File nicht vorhanden tu dies und das                                                                                                                                               
					}else{
						$ergebnis = 'Datei ist bereits vorhanden!';
					}                    
				}else{
					$ergebnis = 'Dateigr&ouml;&szlig;e &uuml;berschritten!';
				}
			}else{
				$ergebnis = 'Ung&uuml;ltiger Dateityp. Bitte nur JPG oder JPEG hochladen.';
			}
		}
	}
}
 
Hallo!
Hab jetzt mal beim Überblicken der phpinfo auf die Schnelle nichts gesehen-
Aber ich. :p
Die Einstellungen für error_reporting besagen dass alle Meldungen mit Ausnahme von Hinweisen (Notice) ausgegeben werden.
Um wirklich alle Meldungen ausgegeben zu bekommen sollte am Anfang des Scripts dieses stehen:
PHP:
error_reporting(E_ALL);
Evtl. weiss man dann ja schon mehr..... einen Versuch ist es jedenfalls allemal wert. ;)

Gruss Dr Dau

[edit]
Und die max_execution_time (maximale Ausführungszeit des Scripts) steht auf 30 Sekunden.
[/edit]
 
Zuletzt bearbeitet:
Hallo!Aber ich. :p

[edit]
Und die max_execution_time (maximale Ausführungszeit des Scripts) steht auf 30 Sekunden.
[/edit]

aber diese setze ich mit
PHP:
ini_set("max_execution_time", 6000);
hoch. Zusätzlich auch noch mit set_time_limit(600)... :(


Edit:
Error Reporting bringt keinen Fehler
 
Zuletzt bearbeitet:
Wenn ich mir am Ende der Seite mit
PHP:
ini_get("max_execution_time");
den Wert ausgeben lasse wird korrekt 600 bzw. die angegebene Zahl angezeigt. Vor allem das Script läuft auch länger als 30 Sekunden. Meistens zwischen 45 und 70...
 
Zurück