BIC: NOLADE21UEL
Stichwort: PERRYPEDIA
Institut: SK Uelzen Lüchow-Dannenberg
Kontoinhaber: PERRY RHODAN FAN ZENTRALEDeine Spenden helfen, die Perrypedia zu betreiben.Hilfe:Server/Vorschaubilder
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:
.
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.sockweiter. - 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.