MediaWiki und PHP Scripting

Manchmal kommt es vor, dass die Funktionen, die MediaWiki von Haus aus mitbringt nicht ausreichen. Wenn man beispielsweise die Ergebnisse einer Datenbankabfrage oder nahezu jeglichen anderen dynamischen Inhalt in eine Seite integrieren möchte, kommt man mit Bordmitteln nicht weiter. Hat man Glück, lässt sich vielleicht eine Extension auftreiben, die das gewünschte bietet. Ist das Gewünschte sher speziell, ist das selten der Fall. Dann bleibt die Option eine eigene Extension zu schreiben übrig. Ein nicht zu unterschätzender Aufwand, müssen sich doch viele Wiki-Betreiber dazu erst in die Entwicklung von MediaWiki-Extensions einarbeiten. Doch es gibt noch eine weitere Möglichkeit: Es existieren mehrere Plugins, die das Einbinden von beliebigem PHP-Code in MediaWiki-Seiten erlauben.

Ich habe dazu examplarisch das Plugin SecurePHP getestet und war mit dem Ergebnis recht zufrieden. Installiert man diese und die zusätzliche Extension StubManager, so stellt man als erstes fest, dass das Plugin nicht ganz ordnungsgemäß funktioniert. Hat man PHP so konfiguriert, dass Fehlermeldungen im Browser ausgegeben werden, stellt man fest, dass der Funktion tag_runphp(…) drei Parameter call-by-value übergeben werden, aber call-by-reference erwartet werden. Und siehe da, entfernt man die kaufmännischen Und-Zeichen in der Datei SecurePHP.body.php, funktioniert das Plugin so wie es soll:

public function tag_runphp( &$code, &$params, &$parser )

Dann ist es sicherheitstechnisch natürlich wenig sinnvoll, wenn jedermann mit Schreibzugriff PHP-Code in Wiki-Seiten einschleusen kann. Um dies ausschließlich Benutzern mit Bürokratenstatus zu erlauben, fügt man in die LocalSettings.php folgende Zeile ein:

$wgGroupPermissions['bureaucrat']['coding'] = true;

Damit ist ist alles konfiguriert. Fortan kann jeder Bürokrat mit <runphp></runphp> PHP-Scripts in MediaWiki-Seiten integrieren. Damit habe ich beispielsweise eine automatisierte Datenbankabfrage umgesetzt. Es ist jedoch darauf zu achten, in diesem Fall nicht die Zugangsdaten zur Datenbank offen hinzuschreiben, denn selbst, wenn man die Seite vor Änderungen schützt, können andere User den Quellcode betrachten. Deswegen sollten geheimzuhaltende Code-Teile in separaten Dateien gespeichert und per include() oder require() eingebunden werden.

Zu beachten ist außerdem, dass die PHP-Scripts erst nach dem Parsen des Markups ausgeführt werden. Deshalb ist statt der MediaWiki-eigenen Syntax normales HTML auszugeben.

Advertisements

0 Responses to “MediaWiki und PHP Scripting”



  1. Schreibe einen Kommentar

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s




Kalender

Februar 2010
M D M D F S S
     
1234567
891011121314
15161718192021
22232425262728

Twitter

Advertisements

%d Bloggern gefällt das: