Typo3 erlaubt nur maximal 20 Bilder beim Upload

Freitag, 27. Mai 2011

Das waren gerade ein paar echte Kopfschmerzen: Wir hatten mit TemplaVoila ein FCE mit “Sections for Elements” angelegt, dass es erlaubte mehrere Zeilen mit Bild und Text hochzuladen. Funktionierte wunderbar bis mehr als 20 Bilder hochgeladen wurden. Das 21. Bild wurde nicht mehr hochgeladen – ohne jede Warnmeldung oder Log-Eintrag.
Erster Gedanke: Ein Entwickler von Typo3 oder der TemplaVoila-Extension dachte sich: “Kein Mensch wird mehr als 20 Bilder in einem Formular hochladen” und hatte einfach eine Schleife auf 20 Durchläufe begrenzt. Nachdem wir den Quelltext des Typo3-Core und alle Extensions nach “<= 20″ und ähnlichen Textstellen erfolglos durchsucht hatten, fiel uns eine Besonderheit auf: Wenn man die Reihenfolge der “Elements” in TemplaVoila vertauscht, also z.B. das 21. Element in der Liste ganz nach oben schiebt, dann läßt sich das Bild problemlos hochladen.

Die Lösung war letztendlich an ganz anderer Stelle gefunden – und so banal wie alle immer: PHP-seitig gab es in der php.ini eine Einstellung für die Variable “max_file_uploads“, der als default auf 20 steht. Dieser Wert kann bei je nach Servern durch folgende Änderungen erhöht werden:

1. Eine .htaccess Datei mit der letzten Zeile in diesem Beispiel:

<FilesMatch "\.(php|html?)$">
php_value upload_max_filesize 40M
php_value always_populate_raw_post_data 1
php_value post_max_size 40M
php_value memory_limit 256M
php_value max_execution_time 600
php_value max_file_uploads 100
<FilesMatch>

2. Den php-Befehl

ini_set('max_file_uploads', 100);

3. Eine Änderung in der php.ini (falls man Zugriff darauf hat – bei größeren Webpaketen meistens über den Kunden-Login)