$_FILES ist nach Datei-Upload leer

93Current

Grünschnabel
Hallo Leute,

ich habe eine Frage an euch. Auf meiner Seite habe ich einen Datei-Upload eingebaut und behandle eventuell auftretende Fehlermeldungen. Die Fehlermeldungen stehen bekannterweise in der Variable $_FILES['datei']['error']. Das funktioniert (bei mir) leider nur teilweise... Ich habe etwas herumexperimentiert... Ich habe im Formular ein entsprechend verstecktes Feld mit 'MAX_FILE_SIZE' eingebaut und eine Datei hochgeladen, die diese Size übersteigt aber immer noch kleiner als die von der 'php.ini' festgelegte ist. Hier wurde richtigerweise Fehlernummer 2 zurückgegeben. Ist nun aber die Datei größer als die in der 'php.ini' festgelegte (max. POST oder upload size, egal), dann bekomme ich ein komplett leeres $_FILES-Array. Ich könnte ja noch verstehen, dass die Datei vom Server einfach abgelehnt wird und das Array deshalb leer ist, aber wozu dann die Fehlermeldung, wenn ich sie nicht getriggert bekomme? Vielleicht habe ich noch etwas nicht beachtet?!

Hat jemand von Euch eine Idee? Bei Bedarf kann ich Euch auch Quellcode-Auszüge zeigen.

Vielen Dank schon mal im Voraus und viele Grüße!
93C.

Edit: Habe die Lösung selbst gefunden - wie immer ;-) ... -> Wenn die Größe der Datei beim Post die in der 'php.ini' angegebene 'post_max_size' (!) überschreitet sind die Variablen $_POST und $_FILES leer.
 
Zuletzt bearbeitet:
Moin,

jo, dies Verhalten entspricht nicht ganz dem lt. Handbuch vorgesehenen, scheint aber keine Ausnahme zu sein.:(

Du könntest das evtl. über einen eigenen Error-Handler verarbeiten, solch ein übergrosser Upload verursacht eine Warnung mit ca. folgendem Text:
Code:
Warning: POST Content-Length of [hochgeladene] bytes exceeds the limit of [erlaubte] bytes in Unknown on line 0
...das sollte sich irgendwie Filtern lassen.
 
Ja Sven,

jetzt, da ich weiß, dass ich gar keinen Fehler in meinem Quellcode habe, ist es für mich natürlich um so einfacher, die geeignete Behandlung für diesen Upload-Fehler zu finden.

Danke für's Antworten.

Gruß!
93C.
 
Hallo, ich nochmal...

Habe es jetzt komplett (für meine Zwecke) hinbekommen.

Ein eigener Error-Handler nützt leider gar nichts, da solche vom Server ausgelösten Fehler nicht getriggert werden, sondern nur eigene mittels der Funktion 'trigger_error()'.

Die Lösung für das Handling dieses (und relevanter) Fehlers war:

1. 'php.ini' -> track_errors = On

2. 'php.ini' -> display_errors = Off
3. 'php.ini' -> display_startup_errors = Off

4. Ausgabe/Verwenden des Inhaltes der globalen '$php_errormsg', die den letzten aufgetretenen Fehler enthält.
 
Zurück