Fehler 500 bei Upload von Dateien

Quelle: Debian Root

Wer Apache und PHP per mod_fcgid benutzt, bekommt nach dem Update auf Debian Squeeze ein Problem mit Dateiuploads im Browser. Das kennt man ja bereits wenn man z.B. in PhpMyAdmin eine große Datei hoch laden will, aber in diesem Fall ist nicht PHP Schuld, sondern die Apache Config. Man erkennt auch gleich den Unterschied zum normalen PHP max_filesize Fehler, den man erhält sehr schnell einen 500 Internal Server Error. Ein Blick in das error_log zeigt dann auch gleich den Grund.

mod_fcgid: HTTP request length 132735 (so far) exceeds MaxRequestLen (131072)

Stellt sich raus das der Wert MaxRequestLen in Lenny noch auf 1GB stand und durch das Update des Apache in Squeeze nun auf 131072 Byte (128KB) steht. Kein Problem, den Wert kann man ohne Probleme erhöhen. Das macht man in der /etc/apache2/mods-available/fcgid.conf. Dort fügt man den Wert FcgidMaxRequestLen hinzu und setzt den Wert auf die gewünschte Größe. In diesem Beispiel auf 128MB. Man sieht auch gleich eine andere Änderung zur Lenny Version, den die Fcgid Parameter haben einen Prefix bekommen. Einige Namen haben sich auch komplett verändert. Eine Liste gibt es hier. Die alten Namen funktionieren noch, sind aber deprecated.

<IfModule mod_fcgid.c>
	...
		FcgidMaxRequestLen 134217728
	...
</IfModule>

Die Größe sollte mit den betreffenden Werten aus der php.ini abgestimmt werden, da sonst einer der drei Werte die maximale Größe der Upload beschränkt

upload_max_filesize = 128M
post_max_size = 128M

Jetzt noch den Webserver reloaden (/etc/init.d/apache2 reload) und schon laufen die Uploads wieder.