Ich konnte gerade durch beherzte Recherche ein nerviges Problem lösen, das mich fast in den Wahnsinn trieb. Die Zutaten: PHP, MediaWiki, Perl und PCRE. Und ein gehosteter Server ohne Shellzugriff.
Ich verwende MediaWiki seit einiger Zeit als mein privates Wiki – nicht gerade der ursprüngliche Einsatzzweck eines Wikis, wo ja eher Kollaboration im Mittelpunkt steht, aber was soll’s – es taugt für meine Zwecke. Da ich der Backup-Strategie von Profis mehr vertraue als meiner eigenen, läuft das Dingens bei einem bekannten Hoster in deutschen Landen. Problem: ich habe dort keinen Shell-Zugriff, nur FTP-Zugriff. Was das Updaten von “Apps” wie MediaWiki oftmals schwierig macht. Also laufen hier gerne mal etwas ältere Versionen, wenn neuere DB-Updates brauchen, die nur über die Shell möglich sind.
Von einem Tag auf den anderen entschied sich MediaWiki nun, die Wiki-Seiten nicht mehr anzuzeigen. Oder genauer: nur noch den Seitentitel, nicht aber den Inhalt. Über “Bearbeiten” konnte man aber sehen, dass die Inhalte nach wie vor vorhanden waren, die Datenbank selbst also keinen Schaden davongetragen hatte – irgendwo in der Aufbereitung durch PHP steckte also der Wurm.
Zunächst dachte ich, dass vielleicht eine Datei korrupt ist. Also das Backup zurückgespielt. Keine Änderung. Dann das Original-Release von MediaWiki drüberkopiert. Keine Änderung. Die neueste MediaWiki-Version installiert. Kann nicht mit der vorhandenen Datenbank zusammenarbeiten, der Web-Updater versagte ebenfalls den Dienst. Mit einer frischen Datenbank funktioniert alles – also prinzipiell sind die beteiligten Komponenten auf dem Server immer noch MediaWiki-tauglich.
Also den Google angeworfen. Nach diversen Irrungen und Wirrungen durch die Weiten des Webs fand ich einen Hinweis, dass das Problem durch ein Update von PCRE von 8.33 auf 8.34 ausgelöst wurde. Klar, wer käme nicht auf die Idee, dass ein mickriger Patch mal kurz gravierend die Rückwärtskompatibilität bricht.
Die schmutzigen Details: hier die Info aus dem Mediawiki-Wiki. Hier der entsprechende Thread im MediaWiki-Bugtracker. Hier kann man den Diff im Gerrit sehen. Man muss lediglich in include/MagicWord.php eine Zeile löschen und zwei hinzufügen. Einfach, wenn man weiß wie…
Die Konsequenz? Ich werden wohl das Wiki auf einen Server umziehen müssen, bei dem ich Root-Zugriff habe, um das Einspielen von Updates zu vereinfachen.