Schick programmiert

Unterschiedliche Fehler beim Hochladen einer Datei …

Ich hatte heute den Fall, dass ich beim Hochladen von unterschiedlich großen Dateien auch unterschiedliche Fehlermeldungen in unterschiedlichen Objekten in meiner Symfony2 Form bekommen habe.

Die kleinere Datei (3MB) kam mit der Fehlermeldung „The file is too large. Allowed maximum size is X bytes.„. Diese Fehlermeldung war, wie erwartet, im Objekt für das Element zum FileUpload gesetzt.
Bei der größeren Datei (15MB) hingegen bekam ich die Fehlermeldung „The uploaded file was too large. Please try to upload a smaller file.„, welche für das Form Objekt gesetzt war.

Die Erklärung ist denkbar einfach:
Nachdem ich mir meine PHP Konfiguration angesehen habe, ist mir aufgefallen, dass ich unterschiedliche Größen für die folgenden Konfigurationen gesetzt hatte:

; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
post_max_size = 8M


; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M

Hierbei ist der große Unterschied, dass PHP die gesamte POST Daten ignoriert, sobald post_max_size überschritten wurde. Symfony2 vergleicht hier die Servervariable CONTENT_LENGTH und die Einstellung für post_max_size. Ist post_max_size überschritten, sind keine POST Daten verfügbar und somit ist das ganze Formular fehlerhaft.
Für diesen Fehler ist der Text „The uploaded file was too large. Please try to upload a smaller file.“ hinterlegt. Symfony2 nimmt hier also an, dass wenn post_max_size überschritten wurde, eine zu große Datei hochgeladen wurde, was in fast allen Situationen (behaupte ich jetzt mal) zutrifft.

Bei der kleineren Datei ist es eine normale FormValidation, die fehl schlägt. Aus diesem Grund ist es auch die Instanz des Formularfeldes, die die Fehlermeldung gespeichert hat.


Categorised as: Uncategorized


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.