constantinmedia Blog

Just another guy blogging…



PHP: „POST Content-Length“ Fehler unterdrücken

Für ein Projekt sollte mittels jQuery ein Datei-Upload realisiert werden. Die Übertragung erfolgt dabei im Hintergrund per Ajax, zurück kommt ein JSON-Objekt mit Statusrückmeldung über erfolgreiche Dateien oder ggf. aufgetretene Fehler (sehr zu empfehlen ist übrigens das jQuery-Plugin jQuery File Upload). Bei zu großen Dateien ist der Ladebalken dann aber bei 100% stehen geblieben, es wurde keine Datei gespeichert und es gab auch sonst keine Rückmeldung.

Das Problem war, dass durch die große Datei die PHP-Einstellung post_max_size überschritten wurde, und folgende Fehlermeldung ausgegeben wurde, noch bevor das JSON-Objekt ausgegeben werden konnte:

Warning: POST Content-Length of 115476015 bytes exceeds the limit of
41943040 bytes in Unknown on line 0

Dadurch konnte das JSON-Objekt Client-seitig gar nicht erst ausgewertet werden. Auch folgendes hat nichts geholfen:

error_reporting(0);
ini_set(‚display_errors‘, ‚Off‘);

Der Fehler tauchte trotzdem noch auf. Wenn man genau hinschaut, stellt man allerdings fest, dass sich die Fehlermeldung auf Zeile 0 bezieht. Sie wird also schon ausgegeben, bevor PHP das Script überhaupt verarbeitet. Nach etwas Recherche bin ich dann auf die PHP-Einstellung display_startup_errors gestoßen, die eben diese Fehler vor dem Parsen des Scripts ausblenden soll. Allerdings kam ich mit keiner der Kombinationen

 ini_set(‚display_startup_errors‘, 0);
ini_set(‚display_startup_errors‘, „Off“);
ini_set(‚display_startup_errors‘, „0“);

zum gewünschten Ergebnis. Scheinbar lässt sich (evtl. auch abhängig von der PHP- und Serverversion?) die Einstellung nicht per ini_set() setzen. Da ich aber ungerne etwas in der php.ini ändere, um Scripte auch auf unterschiedlichen Servern ohne Anpassung laufen lassen zu können, musste eine andere Möglichkeit her. Per .htaccess hatte ich dann Erfolg:

php_value display_startup_errors 0

Rein damit in die .htaccess im Verzeichnis des Fileupload-Scripts, und die Meldung war gegessen. Sie konnte dann im PHP-Script abgefangen und als Fehlermeldung im JSON-Objekt ausgegeben werden. Wieder ein Problem weniger, zu dem ich mir eine schnellere Lösung gewünscht hätte.


War dieser Post hilfreich für Dich? Dann darfst Du dich gerne bedanken, indem Du mir einen Kaffee in Form einer PayPal-Donation spendierst! :-)
Spenden mit PayPal: $ USD | £ GBP | € EUR

, , , , , ,

Schreibe einen Kommentar

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