Neu OPC-Bilder werden nach Update auf 5.6.0 nicht mehr generiert

AA88

Mitglied
23. September 2024
4
2
Nach dem Update auf JTL-Shop 5.6.0 lassen sich im Admin-Bereich unter
Fehlerbehebung → Bilder → OPC keine Bilder mehr generieren.


  • Die Generierung bleibt sowohl im Admin-Dashboard als auch per Terminal-Befehl
    php cli cache:images:create -o bei ca. 13 % stehen.​
  • In der Konsole bzw. im Terminal erscheint: malloc(): corrupted top size
    Aborted

  • PHP-Einstellungen wurden geprüft (Speicherlimit 1024 MB, max_execution_time 1200 s).​
  • Cache und template_c wurden geleert.​
  • Produkt- und Kategorie-Bilder werden korrekt generiert – betroffen sind nur OPC-Bilder.
Hat jemand das gleiche Verhalten unter 5.6.0 oder eine Lösung dafür?
Screenshot 2025-11-12 103429.png


Screenshot 2025-11-12 102600.png
 
  • Gefällt mir
Reaktionen: Chriss_2401

Chriss_2401

Mitglied
16. April 2025
2
1
Hi @kevin99 🤘
Danke für deinen Post!!
Wir haben seit dem Update (von 5.3) auf 5.6.1 genau das gleiche Problem.
Ich bin gerade noch mit Nacharbeiten im Child beschäftigt, aber schaue mir das heute Abend mal genauer an.
Sollte ich was wegweisendes herausfinden, sag ich hier nochmal Bescheid!

LG Chriss 🧐
 
  • Gefällt mir
Reaktionen: AA88

AA88

Mitglied
23. September 2024
4
2
Hi @Chriss_2401 ,
danke dir für die Rückmeldung!
Gut zu wissen, dass ihr nach dem Update auf 5.6.1 das gleiche Verhalten habt , dann scheint es definitiv kein Einzelfall zu sein.
Ich konnte die OPC-Bilder über die Konsole fehlerfrei erzeugen, wenn Imagick komplett deaktiviert wird. Mit folgendem Aufruf läuft die Generierung ohne Absturz:



export PHPRC=/web/php-noimagick.ini
export PHP_INI_SCAN_DIR=
php -d max_execution_time=0 cli cache:images:create -o




Hi @kevin99 🤘
Danke für deinen Post!!
Wir haben seit dem Update (von 5.3) auf 5.6.1 genau das gleiche Problem.
Ich bin gerade noch mit Nacharbeiten im Child beschäftigt, aber schaue mir das heute Abend mal genauer an.
Sollte ich was wegweisendes herausfinden, sag ich hier nochmal Bescheid!

LG Chriss 🧐
 
  • Gefällt mir
Reaktionen: Chriss_2401

NoOne

Sehr aktives Mitglied
16. März 2024
535
178
Welche ImageMagick-Version ist das denn? malloc ist eigentlich ein C und C++ Ding, also ist das vermutlich ein Bug in ImageMagick und keiner im Shop. Mit 6.9.12-98 Q16 x86_64 hab ich da keine Probleme.

Das könnte der Bug hier sein: https://github.com/ImageMagick/ImageMagick6/issues/159#event-4967339053
Der wäre in der 6.9.12-16 Q16 vorhanden. Und auch in einigen 7er Versionen. Aber eigentlich ist der schon ein Weilchen gefixt.
 

makemeharder

Neues Mitglied
23. Juni 2025
3
0
Bei unserem Kunden wurden keine Bilder in den Ordnern mit Umlauten und Leerzeichen generiert, in anderen Ordnern jedoch schon.
Da wir nicht bis zum entscheidenden Patch warten können, haben wir das Problem selber im "includes/src/Router/Controller/MediaImageController.php" behoben. Wenn beim nächsten Update das Problem nicht gelöst wird, wird dieser Controller überschrieben und der Fix ist weg.

Falls es noch jemanden weiter hilft, hier die Beschreibung zum Fix. (Das Editieren der Shop-includes sollte man unter normalen Umständen vermeiden, aber Geld verdient sich nicht von alleine ;)

Fix: OPC Bilder werden in JTL-Shop 5.6.x nicht mehr generiert (Unterordner, Leerzeichen, Umlaute)​


Problembeschreibung:
Seit dem Update auf JTL-Shop 5.6.x werden im OPC (OnPage Composer) hochgeladene Bilder im Frontend oft nicht mehr "on-the-fly" skaliert und als WebP/AVIF ausgeliefert. Im Quelltext steht zwar das <picture>-Tag mit dem Pfad zum media/image/opc Ordner, die physikalischen Bilddateien werden dort aber nicht erzeugt. Stattdessen gibt der Webserver für diese URLs einen 404-Fehler zurück.
Der Fehler tritt genau dann auf, wenn die Bilder im OPC-Editor in Unterordnern gespeichert wurden oder der Pfad/Dateiname Sonderzeichen, Leerzeichen oder Umlaute enthält (z. B. media/image/opc/sm/Onlineshop/Über Uns/bild1.jpg).

Ursache:
JTL-Shop 5.6 hat das Routing für die "On-the-fly" Bildgenerierung auf die Bibliothek FastRoute (via League\Route) umgestellt. Die Verarbeitung findet in der Datei includes/src/Router/Controller/MediaImageController.php statt.
Es gibt dort zwei miteinander verwobene Probleme:
  1. Regex-Regel für OPC-Pfade (register()):
    Die FastRoute Regel für den Parameter $name
    Code:
    ($name = '{name:[a-zA-Z0-9 äööüÄÖÜß\@\$\-\_\.\+\!\*\\\'\(\)\,]+}';)
  2. erlaubt standardmäßig weder Schrägstriche (/) noch Prozentzeichen (%). Da OPC-Bilder in Unterordnern liegen können, enthalten die Pfade Schrägstriche. Ebenso werden Leerzeichen und Umlaute im Browser URL-kodiert (z. B. %20, %C3...), wodurch logischerweise `%`-Zeichen in der URL landen. Da diese Zeichen in der Regex fehlen, lehnt der Router die Anfrage ab und wirft sofort einen 404-Error.
  3. Redirect-Loop durch fehlendes URL-Decodieren (getResponse()):
    Selbst wenn man die Regex anpasst, knallt es anschließend in der Funktion getResponse(). Hier wird der physische Zielpfad des Bildes (der Umlaute/Leerzeichen enthält) strikt per === mit der angeforderten URL ($requestURL) verglichen. Da $requestURL un-decodiert ist (sie enthält `%20` etc.), schlägt der Vergleich fehl. Der MediaImageController initiiert daraufhin fälschlicherweise einen 301 Redirect auf denselben Pfad, was beim erneuten Aufruf durch den Browser zu einem endlosen Redirect-Loop führt. Der eigentliche Generierungscode (Image::render()) wird nie ausgeführt.

Der Bugfix im JTL-Core:
In der Datei includes/src/Router/Controller/MediaImageController.php müssen zwei Anpassungen vorgenommen werden.



Fix 1: FastRoute Regex anpassen (ab Zeile ~58)
Ersetze die Registrierung der OPC-Route so, dass eine eigene $nameOpc Variable verwendet wird, die \/ und \% erlaubt.

Vorher:

Code:
$route->get(
            \sprintf('/media/image/{type:opc}/%s/%s.%s', $size, $name, $ext),
            $this->getResponse(...)
        )
            ->setName('mediaImageOPC' . $dynName);


Nachher:

Code:
 $nameOpc = '{name:[a-zA-Z0-9 äööüÄÖÜß\@\$\-\_\.\+\!\*\\\'\(\)\,\/\%]+}';
        $route->get(
            \sprintf('/media/image/{type:opc}/%s/%s.%s', $size, $nameOpc, $ext),
            $this->getResponse(...)
        )
            ->setName('mediaImageOPC' . $dynName);




Fix 2: URL-Decoding einbauen (ab Zeile ~92)
In der Methode getResponse(...) muss $args['name'] und die $requestURL vor dem Pfad-Vergleich zwingend decodiert werden.


Füge nach der $args['number'] Prüfung folgendes ein:

Code:
if (isset($args['name'])) {
                $args['name'] = \urldecode($args['name']);
            }


Und ändere wenig später die Definition von $requestURL (ca. Zeile 98):
Vorher:


Code:
$requestURL   = '/' . \ltrim($request->getUri()->getPath(), '/');


Nachher (urldecode hinzufügen):

Code:
$requestURL   = \urldecode('/' . \ltrim($request->getUri()->getPath(), '/'));




Nach diesen Änderungen muss zwingend der JTL Object Cache über das Shop Backend (oder per Konsolenbefehl) geleert werden, damit FastRoute die geänderten Routing-Regeln neu in seinen Cache schreibt! Danach werden OPC Bilder aus Unterordnern und mit Umlauten im Namen wieder sofort erzeugt.
Umsetzung auf eigene Gefahr! Wer sich damit nicht auskennt, sollte lieber die Bilder-Ordner im OPC umbenennen (keine Leerzeichen und Sonderzeichen).
 
Zuletzt bearbeitet:
Ähnliche Themen
Titel Forum Antworten Datum
Neu OPC Bildgröße im Product Stream anpassen. Allgemeine Fragen zu JTL-Shop 1
Neu OPC Richtext speichert keine Links JTL-Shop - Fehler und Bugs 5
Neu Platzhalter für OPC-Portlets in Seitentext einbauen Allgemeine Fragen zu JTL-Shop 1
Neu OPC friert beim speichern von Änderungen ein nach JTL-Shop Update von Version 5.1.5 auf 5.6.1 JTL-Shop - Fehler und Bugs 0
Neu Alttexte aus OPC werden beim Slider nicht im Code angezeigt JTL-Wawi - Fehler und Bugs 0
Neu [Gelöst] Bilder im Product-Stream unterschiedlich groß User helfen Usern - Fragen zu JTL-Wawi 0
Neu Erstupload Artikel, Bilder werden nicht auf Server geladen JTL-Shop - Fehler und Bugs 0
GPSR Daten werden nicht korrekt an Amazon übermittelt JTL-Wawi 1.10 0
Neu Variantenwerte werden nicht im Auftrag angezeigt Shopware-Connector 6
Falsche Vorlagen Dateien werden verwendet JTL-Wawi 1.7 0
Neu Lieferantenbestände werden nicht korrekt angezeigt Arbeitsabläufe in JTL-Wawi 4
Versandbenachrichtungen werden jetzt aus Wawi versendet JTL-Wawi 1.11 8
Neu JTL WMS Mobile Inventur es werden keine vorhandenen Artikel angezeigt JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Neu Bestellungen werden verzögert oder nicht gepullt – Ursache: Zeitzonen-Filter im SQL des WooCommerce-Connectors WooCommerce-Connector 0
Lieferbare Aufträge werden nicht auf WMS-Picklisten gesetzt JTL-Wawi 1.11 4
Nach Update auf 1.11.6 werden die Preisänderung nicht mehr von der Wawi an Amazon übertragen JTL-Wawi 1.11 0
Amazon VCS Rechnung werden nicht angezeigt. Amazon-Anbindung - Fehler und Bugs 2
Neu Wechsel von JTL Shop 5 zu Shopify / ERP-Connector Produkte mit Variationen werden nicht übertragen Shopify-Connector 1
Neu Mollie Kreditkartenzahlungen werden nicht als bezahlt markiert JTL-Wawi - Fehler und Bugs 2
JTL Wawi App Registrierung kann nicht gelöscht werden JTL-Wawi App 11
Neu Es werden nicht die gesamter Menge einer Bestellung für die Produktion übernommen; die Bestellung bleibt teilgeliefert. JTL-Plan&Produce - Fehler und Bugs 0
JTL Fulfillment Network Reservierte Aufträge, die nicht gelöscht werden können JTL-Wawi 1.10 0
Hilfe: EK-Preise werden nicht beim Import importiert? JTL-Wawi 1.11 3
Neu JTL Fulfillment Network Reservierte Aufträge, die nicht gelöscht werden können Schnittstellen Import / Export 1
Neu Umlaute aus Kurzbeschreibung werden nicht angezeigt Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 3
Neu Rabatte werden nicht korrekt online angezeigt Onlineshop-Anbindung 0
Neu Rechnungen werden und können nicht mehr vom Rechner im Lager gedruckt werden JTL-Wawi - Fehler und Bugs 5
Neu Ich möchte konfigurieren, dass Artikel mit einem Lagerbestand von 0 nicht mehr zu einer Bestellung hinzugefügt werden dürfen Eigene Übersichten in der JTL-Wawi 1
Neu Sonderpreis-Ablaufdatum - Preise werden nicht aktualisiert WooCommerce-Connector 1
Neu Bons werden nach Wechsel auf neue Kasse nicht mehr signiert Allgemeine Fragen zu JTL-POS 0
Neu Bestellungen werden nicht mehr übertragen: Der Shop hat nicht alle Zahlungen gesendet. WooCommerce-Connector 0
Neu DPD: YourInternalID 28: (1) Strasse - Postleitzahl - Ort kann nicht zugeordnet werden. Evtl. liegt ein Schreibfehler in der Adresse vor. JTL-ShippingLabels - Fehler und Bugs 0
Neu 1.11.4 Programmstart bricht ab, Fehlerprotokoll kann nicht geschrieben werden User helfen Usern - Fragen zu JTL-Wawi 0
Neu Amazon Externe Belege werden nicht neu erstellt Amazon-Anbindung - Fehler und Bugs 1
Nach Update auf 1.11.4 (von 10.13.1) werden keine Artikel unter F2 Artikel mehr angezeigt, sind aber da! JTL-Wawi 1.11 10
Neu Artikel werden nach Löschung in Shopify nicht neu aus der WaWi übertragen Shopify-Connector 2

Ähnliche Themen