![]() | |||||||||||||||||||||||||||||||
Navigation • Home
| Upload schlägt fehl bei großen Bildern in der Galerie
Die Handyfotos vom Wochenende sind problemlos in der Galerie gelandet, doch das Panorama vom Aussichtsturm mit 18 MB will einfach nicht durch. Oder die neue Kamera liefert plötzlich Dateien, an denen jeder Versuch scheitert. Der Upload schlägt fehl, und trotzdem ist das Bild in solchen Fällen fast nie kaputt. Auf dem Weg vom Browser in den Bilderordner passiert die Datei mehrere Kontrollstellen, und jede hat ihre eigene Obergrenze. Wer weiß, an welcher Stelle sein Foto hängen geblieben ist, ändert genau einen Wert und ist fertig.
Welche Schranke den Upload stopptZuerst nimmt der Webserver die Anfrage entgegen. Auf einem eigenen Server kann er schon hier ablehnen, bei nginx über
Eine Falle steckt im Zusammenspiel der beiden Größenwerte. PHP liefert ab Werk 2 MB je Datei und 8 MB je Sendung aus. Hebt jemand nur Grenzen beim Webhoster anhebenWelcher Weg funktioniert, hängt davon ab, wie Ihr Webhoster PHP betreibt. Probieren Sie die Möglichkeiten in dieser Reihenfolge:
Ob eine Änderung wirkt, sehen Sie ohne Umweg: Rufen Sie in der Galerie die Seite „Bilder hochladen“ neu auf. Sie liest die Werte bei jedem Aufruf frisch aus. Bleiben die Zahlen gleich, hat der gewählte Weg nicht gegriffen, und Sie versuchen den nächsten. Hilft keiner, fragen Sie den Support Ihres Webhosters nach den Grenzen Ihres Tarifs. Manche Pakete erlauben schlicht nicht mehr als 8 oder 16 MB. Dort hilft keine Einstellung: Jeder größere Upload schlägt fehl, bis die Datei unter die Grenze passt. Oder die Fotos kleiner machenOft ist es einfacher, das Bild an die Grenze anzupassen als umgekehrt. Ein 24-Megapixel-Foto hat 6000 × 4000 Pixel und als JPEG schnell 10 MB. Die Galerie zeigt in der großen Ansicht ab Werk höchstens 1024 Pixel, Besucher sehen also keinen Unterschied zu einer Fassung mit 2000 Pixeln Kantenlänge, und die wiegt meist unter 1 MB. Auch der Server merkt es: Zum Verkleinern hält die Bildbibliothek GD jedes Pixel mit 4 Byte im Speicher. Beim großen Foto sind das mit Reserve rund 125 MB, bei der kleinen Fassung keine 20 MB. Passende Werte statt MaximalwerteDie Grenzen auf 1 GB zu drehen, löst kein Problem, es verschiebt es nur: Bei einer abgebrochenen Verbindung wartet man dann länger auf die Fehlermeldung. Rechnen Sie lieber von Ihren Fotos aus:
Danach testen Sie mit dem größten Bild und mit einem vollen Stapel. Kommen beide durch, stimmen die Werte. Andernfalls zeigt die Meldung der Galerie, welcher Wert noch zu knapp ist. Fällt nur das Vorschaubild aus, ist der Arbeitsspeicher der nächste Kandidat. Was die Galerie meldet, wenn ein Upload fehlschlägtIm Bildergalerie-Script müssen Sie die Grenzen nicht erst über phpinfo() suchen. Die Seite „Bilder hochladen“ liest sie aus der PHP-Konfiguration Ihres Webhosters und schreibt sie unter die Fläche „Bilder auswählen / oder hierher ziehen“, etwa so: „Ihr Webhoster erlaubt höchstens 20 MB je Bild, 64 MB je Vorgang und 30 Bilder auf einmal.“ Ist Mit eingeschaltetem JavaScript prüft schon der Browser Ihre Auswahl: Zu große Einzelbilder markiert die Liste mit „zu groß“, und bei zu vielen Bildern oder einem zu schweren Stapel lässt sich das Formular gar nicht erst abschicken. Kommt die Sendung trotzdem nicht durch, nennt die Galerie das betroffene Bild und den Grund. An der Meldung erkennen Sie, welche Einstellung Sie anheben müssen:
Ein Rechenbeispiel zeigt, warum post_max_size meist zuerst greift. Bei 20 MB je Bild und 64 MB je Vorgang kommt jedes einzelne Foto mit 6 MB problemlos durch. Wählen Sie aber zwölf davon auf einmal aus, sind das 72 MB, und der ganze Upload schlägt fehl, weil PHP die Sendung verwirft. Die Galerie erkennt das und lädt dann gar nichts hoch. Mit zehn Bildern je Durchgang, also 60 MB, klappt es. Als Ausgangswert für die eigene Die Prüfungen laufen in einer festen Reihenfolge ab, und daraus folgt, welche Meldung Sie bekommen. Scheitert schon die ganze Sendung, prüft niemand mehr die einzelnen Bilder. Kommt die Sendung durch, wird jedes Bild für sich bewertet, und ein Ausfall betrifft nur dieses eine. Das Diagramm spielt drei Fälle durch: Leere Seite oder Fehler 500 nach dem HochladenKommt statt der Ergebnisseite eine leere Seite oder ein Fehler 500, hilft ein Blick ins Fehlerprotokoll des Servers. Häufige Ursachen sind eine zu kurze Den Arbeitsspeicher prüft es vor dem Verkleinern selbst: GD braucht etwa 4 Byte je Pixel, ein Foto mit 24 Megapixeln also rund 100 MB. Reicht Wenn es nicht an der Größe liegtZwei Fälle sehen aus wie ein Größenproblem, haben aber eine andere Ursache:
Das Bildergalerie-Script können Sie kostenlos herunterladen und die Anzeige der Grenzen auf Ihrem eigenen Webspace ansehen. Häufige FragenBeim Anheben der Upload-Grenzen tauchen immer wieder dieselben Detailfragen auf, etwa zu konkreten Werten und zur Reihenfolge. Welche Werte sollte ich für upload_max_filesize und post_max_size setzen?Nehmen Sie Ihre größte Bilddatei und runden Sie großzügig auf, bei 14 MB etwa auf 20M. Für post_max_size multiplizieren Sie die übliche Fotogröße mit der Zahl der Bilder, die Sie gern auf einmal schicken, und geben etwas Reserve dazu. Zehn Fotos à 5 MB passen gut in 64M. Wichtig ist nur, dass post_max_size immer über upload_max_filesize liegt. Wie finde ich heraus, welche Upload-Limits aktuell wirklich gelten?In der Galerie steht die Antwort unter der Auswahlfläche auf „Bilder hochladen“. Ohne Galerie legen Sie eine Datei mit dem Inhalt <?php phpinfo(); ?> an, öffnen sie im Browser und suchen nach upload_max_filesize, post_max_size und max_file_uploads. Die Spalte „Local Value“ zählt. Löschen Sie die Datei danach wieder, sie verrät Fremden viel über Ihren Server. Der Upload bricht trotz hoher Dateigrenze ab, woran liegt das noch?Meist wurde post_max_size nicht mitgezogen. Bricht der Upload nur über langsame Leitungen ab, ist max_input_time zu knapp. Auf eigenen Servern begrenzt zusätzlich der Webserver, bei nginx etwa client_max_body_size. Und eine Firewall wie mod_security kann große Anfragen abweisen, bevor PHP sie überhaupt sieht. Der Upload schlägt fehl, obwohl ich die Werte geändert habe. Warum zeigt die Galerie noch die alten Grenzen?Weil die Änderung nicht wirkt: Die Seite „Bilder hochladen“ liest die Werte bei jedem Aufruf frisch aus PHP. Häufige Gründe sind .htaccess-Zeilen mit php_value auf einem Server, auf dem PHP nicht als Apache-Modul läuft; dort brauchen Sie eine php.ini oder .user.ini. Eine .user.ini liest PHP je nach Server erst nach einigen Minuten neu ein. Verwandte ThemenWer an diesen Grenzwerten dreht, stößt schnell auf die folgenden Themen rund um PHP-Einstellungen und Galerie-Leistung. | ||||||||||||||||||||||||||||||