Fehlermeldung nach libpng-Update: "imagecreatefrompng(): gd-png: fatal libpng error: IDAT: invalid distance too far back"

  • Betroffene Version
    WoltLab Suite 5.2

    Hallo!

    Ich habe kürzlich auf einen neuen Server gewechselt. Soweit ist alles in Ordnung, es gibt aber ein kleines(?) Problem mit den PNGs. Die libpng hatte auf dem alten Server die Version 1.2.54 (Ubuntu 16.04). Auf dem neuen Server läuft derzeit die libpng 1.6.34 (Ubuntu 18.04). Im WSC ist (schon immer) die Verwendung von imagemagick aktiviert, welches natürlich in Ubuntu auch installiert ist.

    Im Log des WSC kommen jetzt manchmal Fehler durch "alte" PNGs:

    Zitat

    imagecreatefrompng(): gd-png: fatal libpng error: IDAT: invalid distance too far back

    Es scheint ein Problem durch einen Fehler in früheren Versionen von libpng zu geben, wenn man in Google danach sucht.

    Hat jemand eine Lösung, wie ich den Bestand aller hochgeladenen Bilder/PNGs im WSC untersuchen und fixen lassen kann?

    Gruß aus Südhessen

  • Mit pngcheck und pngfix solltest du die defekten Dateien repariert bekommen.

    Um den richtigen Übertragungsmodus bei FTP(S)-Clients zu erzwingen. WoltLab will damit verhindern, das u.a. die Dateianhänge aus manuellen Datensicherung von Kunden via FTP-Client kaputt sind. Die Clients wählen meistens für die Dateianhänge, die bisher ohne Dateiendung gespeichert wurden, den nicht-binären Übertragungsmodus aus und "zerstörten" diese dadurch.

  • Um den richtigen Übertragungsmodus bei FTP(S)-Clients zu erzwingen.

    Okay, also nur ein Workaround, um den Binär-Modus zu erzwingen.


    Mit pngcheck und pngfix solltest du die defekten Dateien repariert bekommen.

    Bei tausenden Attachments/PNGs braucht man halt ein Script, welches die Verzeichnisse rekursiv bearbeitet ;). Nach sowas suche ich.

    Gruß aus Südhessen

  • Bei tausenden Attachments/PNGs braucht man halt ein Script, welches die Verzeichnisse rekursiv bearbeitet ;) . Nach sowas suche ich.

    Mit find oder grep zum Beispiel? Um allerdings nicht alle Dateien durch pngcheck zu jagen, solltest du dir vorher anhand der Datenbanktabelle wcf1_attachment nur die PNG-Dateianhänge heraussuchen.

    Der Pfad setzt sich immer wie folgt zusammen:

    • Ordner besteht aus den ersten beiden Zeichen des fileHash
    • Dateiname innerhalb des Ordner besteht immer aus attachmentID-fileHash
    • Dateiendung ist entweder nicht existent oder bin

    Eine "Liste" bekommst du dementsprechend mit folgendem Query:

    - siehe Dateianhang; direktes Posten nicht möglich, da Cloudflare mich sonst als böse ansieht -


    Das Ergebnis in eine Datei speichern/exportieren und mit Hilfe des vorhandenen Shell-Zugriffs über die einzelnen Zeilen loopen und entsprechend an pngcheck in Verbindung mit pngfix weitergeben. Rückgabecode 0 von pngcheck steht für "everything fine", 1 für "warnings" und >=2 for "errors found".

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!