Thumbnails teilweise nicht verfügbar

Nachdem eins von 100.000 Bildern kaputt (Textinhalt) war, musste ich auch „console media:generate-thumbnails“ neu starten: „The File for media object with id: b68a27e30d134b879b92bd9c305aa014 is not supported for creating thumbnails.“
Ärgerlich ist dabei dass der Prozess dann wieder alle schon generierten prüft, was mehrere Stunden den Server belastet.

(Außerdem bekomme ich in parallel laufenen Programmen gerade auch die Meldung „file_put_contents(…): failed to open stream: Too many open files“) *edit: andere Ursache

Da wir auch gerade bemerken dass das Frontend die Thumbnails ohnehin nicht richtig ausspielt, spare ich mir jetzt die Thumbnail-Generierung. Geladen werden im Firefox immer die Original-Bilder, auf Kategorie-Seiten auch schon mal die 800px Größe, obwohl die 400px Größe eigentlich ausreichen würde. Möglicherweise wieder eine Sache die nur im Chrome getestet wurde, wie so vieles…

Konnte das Problem bzgl. exif_read_data(): File not supported ebenfalls gerade nochmal unter 6.4.0 reproduzieren.
Der in Shopware Issuetracker vorgeschlagene Fix konnte das Problem behoben.
Das issue ist als behoben geführt, was aber aber nicht der Fall zu sein scheint.

Das Problem scheint von nicht unterstützten oder fehlerhaften Bildern zu kommen. Beim De-Serialisieren wird dann eine Exception geworfen, da der Rückgabewert von getThumbnailsRo() nicht korrekt geprüft wird…

vendor/shopware/core/Content/Media/Subscriber/MediaLoadedSubscriber.php

public function unserialize(EntityLoadedEvent $event): void
    {
        /** @var MediaEntity $media */
        foreach ($event->getEntities() as $media) {
            if ($media->getMediaTypeRaw()) {
                $media->setMediaType(unserialize($media->getMediaTypeRaw()));
            }

            if ($media->getThumbnails() === null) {
                if ($media->getThumbnailsRo()) {
                    try {
                        $collection = unserialize($media->getThumbnailsRo());
                        $media->setThumbnails($collection);
                    } catch (\ErrorException $e) {
                        $media->setThumbnails(new MediaThumbnailCollection());
                    }
                } else {
                    $media->setThumbnails(new MediaThumbnailCollection());
                }
            }
        }
    }

Damit läuft alles korrekt durch, auch wenn bei den fehlerhaften Medien dann eben das Bild fehlt.

Was kann gemacht werden damit der Fehler nicht nur unterdrückt, sondern auch behoben wird?

Beste Grüße

Hallo,

das Verhalten wird mit Ticket dem Ticket behoben werden. Geplant ist aktuell die 6.4.2.0.

LG Andre

Für den Moment würde ich das loggen und die fehlerhaften Bilder austauschen. Wenn es sehr viele sind ggf. mit XnView umwandeln in ein unterstütztes Format. Bilddaten zu verarbeiten ist mit PHP schon immer eine Krux gewesen, allerdings hätte ich hier von Shopware auch etwas mehr Flexibilität erwartet. Scheint nur mit stumpfen JPG getestet worden zu sein…