Hilfe:Server/Vorschaubilder

Aus Perrypedia
Zur Navigation springen Zur Suche springen

Vorschaubilder – Fehleranalyse und Lösung

Diese Seite dokumentiert die Störung der Bildvorschauen auf dem produktiven Perrypedia-Server und ihre Behebung am 22. Oktober 2026.

Merkmal Ergebnis
Datum 22.10.2026
Bereich MediaWiki, PHP-FPM, Docker, Bildverarbeitung
Fehler Vorschaubilder wurden nicht erzeugt; HTTP 500
Ursache /usr/bin/convert fehlte im PHP-8.3-FPM-Docker-Container
Lösung Neues Docker-Image mit Bildverarbeitungswerkzeugen und kontrollierter Containerwechsel
Ergebnis Vorschaubilder wieder verfügbar (HTTP 200)

Fehlerbild

Auf Dateiseiten fehlten die automatisch generierten Vorschaubilder. Beispiel: PR3404.jpg.

Ein direkter Aufruf von /mediawiki/thumb.php?f=PR3404.jpg&w=82 lieferte HTTP 500 und die Fehlermeldung:

<syntaxhighlight lang="text"> Fehler beim Erstellen des Vorschaubildes: /bin/bash: line 1: /usr/bin/convert: No such file or directory Error code: 127 </syntaxhighlight>

Das Originalbild war vorhanden und abrufbar. Betroffen war die serverseitige Erzeugung der verkleinerten Bilder.

Diagnose

In /var/www/prod/mediawiki/LocalSettings.php war die Bildverarbeitung über ImageMagick aktiviert:

<syntaxhighlight lang="php"> $wgUseImageMagick = true; $wgImageMagickConvertCommand = '/usr/bin/convert'; $wgSVGConverter = 'rsvg'; </syntaxhighlight>

Entscheidender Befund: ImageMagick war auf dem Host installiert, aber nicht im tatsächlich für Webanfragen zuständigen PHP-FPM-Container.

  • Apache leitete PHP-Anfragen an /run/php/php8.3-perrypedia.sock weiter.
  • Dieser Socket gehörte zum Docker-Container perrypedia-php83-fpm.
  • Ein Test über PHP-CLI auf dem Host war erfolgreich, erklärte aber nicht das Verhalten der Webanfragen.
  • Im Container fehlte /usr/bin/convert. Fehlercode 127 bedeutet hier: Programm nicht gefunden.

Damit lag kein Fehler der Originaldatei und kein allgemeines MediaWiki-Datenbankproblem vor, sondern eine fehlende Laufzeitabhängigkeit im Docker-Image.

Lösung

Docker-Image erweitert

Im Arbeitsverzeichnis /root/php83-isolated-test/ wurde die Datei Dockerfile.media-tools erstellt:

<syntaxhighlight lang="docker"> FROM perrypedia-php83:test-20261021-modules RUN apt-get update && apt-get install -y --no-install-recommends imagemagick librsvg2-bin ghostscript poppler-utils && rm -rf /var/lib/apt/lists/* </syntaxhighlight>

Damit wurden nicht nur ImageMagick, sondern auch Werkzeuge für SVG- und PDF-Verarbeitung bereitgestellt:

Paket Werkzeuge / Zweck
imagemagick convert, identify – Rasterbilder
librsvg2-bin rsvg-convert – SVG
ghostscript gs – PostScript/PDF-Verarbeitung
poppler-utils pdfinfo, pdftoppm – PDF-Werkzeuge

Das neue Image wurde unter perrypedia-php83:media-tools-20261022 gebaut. Vor dem produktiven Wechsel wurden die vorhandenen PHP-Erweiterungen und die neuen Bildwerkzeuge geprüft; ein Test der Bildkonvertierung war erfolgreich.

Kontrollierter Containerwechsel

Nach ausdrücklicher Freigabe wurde der bisherige Container umbenannt und gestoppt:

<syntaxhighlight lang="text"> perrypedia-php83-fpm-rollback-20261022 </syntaxhighlight>

Anschließend wurde ein neuer Container unter dem bisherigen produktiven Namen perrypedia-php83-fpm mit dem erweiterten Image gestartet. Die relevanten Bind-Mounts und Sicherheitseinstellungen wurden beibehalten, insbesondere:

  • MediaWiki-Verzeichnis /var/www/prod/mediawiki
  • PHP-FPM-Socket-Verzeichnis /run/php
  • MariaDB-Socket-Verzeichnis /var/run/mysqld
  • PHP-FPM- und PHP-Konfigurationsdateien
  • --network none
  • --security-opt no-new-privileges
  • --restart unless-stopped

Wichtig: Der vorherige Container blieb für ein Rollback erhalten und wurde nicht gelöscht.

Funktionsprüfung

Prüfung Ergebnis
Wiki-Hauptseite HTTP 200
Dateiseite Datei:PR3404.jpg HTTP 200
thumb.php?f=PR3404.jpg&w=82 HTTP 200; JPEG 82 × 120 Pixel
Gespeichertes Vorschaubild mit 411 Pixel Breite HTTP 200; JPEG
Bildwerkzeuge im produktiven Container Vorhanden
Container-Neustartrichtlinie unless-stopped

Die erfolgreiche Darstellung des Vorschaubildes wurde zusätzlich im Browser überprüft.

Rollback

Der vorherige Container wurde als perrypedia-php83-fpm-rollback-20261022 aufbewahrt.

Ein Rückwechsel erfordert einen kontrollierten Containerwechsel: aktuellen Container stoppen und umbenennen, bisherigen Container unter seinem ursprünglichen Namen wiederherstellen und starten, anschließend HTTP- und PHP-FPM-Prüfungen durchführen.

Achtung: Das vorherige Image enthält die benötigten Bildwerkzeuge nicht. Ein Rollback würde den ursprünglichen Vorschaubildfehler voraussichtlich wiederherstellen. Änderungen am Produktivsystem nur nach Freigabe und mit vorheriger Prüfung der aktuellen Containerzustände durchführen.

Hinweise und Nacharbeiten

  • Docker-Image-Änderungen gehören in ein reproduzierbares Dockerfile; reine Paketinstallationen in laufenden Containern wären nicht dauerhaft.
  • Host und Container müssen bei der Fehlersuche konsequent unterschieden werden.
  • SVG- und PDF-Werkzeuge sind installiert; daraus folgt noch kein vollständiger End-to-End-Test aller entsprechenden MediaWiki-Dateitypen.
  • Das alte Rollback-Image und der alte Container dürfen erst nach ausdrücklicher Freigabe entfernt werden.

Siehe auch