Probleme mit XAMPP und bbPress
XAMPP ist eine sehr beliebte Distributon eines WAMP für Microsoft Windows. Die Installation entspricht dem unter Windows gewohnten Standard, und nach dem setup.exe
stehen alle Komponenten des Systemes zur Verfügung. Das ist eine große Erleichterung für jeden, der eine Webanwendung lokal ausprobieren oder sich persönlich anpassen möchte, dabei seine vertraute Arbeitsumgebung am Computer haben möchte und sich dennoch nicht durch die manchmal etwas anspruchsvolle Installation der benötigten Einzelanwendungen arbeiten möchte. Und daher rührt auch die Beliebtheit. (Einen „richtigen“ Webserver würde ich damit allerdings nicht betreiben wollen.)
In der Kombination bbPress und XAMPP treten jedoch immer wieder einmal Fehler auf, die zurzeit niemand richtig zu verstehen scheint – zumindest entsteht im englischsprachigen Forum dieser Eindruck. Schon bei der Installation von bbPress unter einem aktuellen XAMPP gibt es diverse Warnungen, dass die Verwendung von Referenzen bei Funktionsaufrufen „deprecated“ (veraltet) sei, und wenn man noch vor dem ersten Installationsschritt, also sozusagen im Schritt Null, mit diversen derartigen Meldungen überschüttet wird, ist das alles andere als ermutigend. Zudem treten sie auch im Forumsbetrieb auf.
Diese Meldungen bleiben auch bestehen, wenn die Deprecated-Meldungen in der php.ini
durch Maskieren mit einem & ~E_DEPRECATED
abgeschaltet werden.
Letzteres ist ein Fehler, aber mit Sicherheit ein Fehler der PHP-Version, die mit XAMPP ausgeliefert wird, denn diese Meldungen sollten durch eine derartige Einstellung völlig unterdrückt werden. Eine solche Unterdrückung ist auch sinnvoll, da hier kein wirklicher Fehler auftritt, sondern ein Sprachmerkmal von PHP4 benutzt wird, das in PHP5 eben als veraltet gilt und in künftigen Versionen möglicherweise nicht weiter unterstützt wird. Zurzeit strebt bbPress noch die vollständige Kompatibilität mit PHP4 an, dies wird sich wohl erst ändern, wenn auch der letzte Hoster PHP5 anbietet.
(Es gibt gute Gründe, bei PHP4 zu bleiben, einer davon ist die hohe Robustheit von PHP4, die weniger administrativen Aufwand beim Betrieb eines Servers erforderlich macht. Dieses Maß an Robustheit zu erreichen, liegt noch auf dem Weg, den PHP5 zu beschreiten hat.)
Leider habe ich hier keine Möglichkeit, dieses Problem nachzuvollziehen, weil ich kein Windows zur Verfügung habe. (Und nein, auf mein Linux kommt mir kein XAMPP, ich bin darauf angewiesen, dass alles gut läuft und deinstalliere keine funktionierende Software!) Wenn jemand diesen Fehler analysieren könnte und das XAMPP-Team und vielleicht auch das englische bbPress-Forum mit näheren Informationen versorgen könnte, denn wäre das sicherlich für viele Menschen eine große Hilfe.
Die Zukunft von bbPress
Der Hauptentwickler Sam Bauers hat sich ja aus der weiteren Entwicklung von bbPress zurückgezogen, und seitdem entsteht bei vielen Nutzern ein Eindruck von Stagnation in der weiteren Entwicklung. Im englischen Support-Forum kam schon die Frage auf, wann denn die nächste bbPress-Version veröffentlicht werde, und das führte dazu, dass Kontakt mit dem WordPress-Hauptentwickler Matt Mullenweg aufgenommen wurde.
Und Matt hat im englischen Support-Forum zu diesem Thema kurz Stellung bezogen:
Einige Leute haben mich danach gefragt, und ich möchte einfach nur jeden wissen lassen, dass bbPress weiterhin ein wichtiges Projekt für die WordPress-Gemeinschaft ist. (Unter anderem wird unser Forum und unser Plugin-Verzeichnis damit betrieben.) Es wird nicht verschwinden.
Strategisch betrachtet, ist es im Moment der wichtigste Punkt, zu ermitteln, wie bbPress besser mit WordPress integriert werden kann, wenn dies jemand wünscht. Im Moment ist es einfacher, eines der WordPress-Plugins für ein Forensystem zu benutzen, als bbPress zu integrieren. […]
Ich hoffe, dass damit trotz der gegenwärtigen Stille klar geworden ist, dass bbPress keine „sterbende Software“ ist, sondern weiterentwickelt wird – wenn auch im Moment in eher geringem Tempo. Hilfe und Ideen werden übrigens immer benötigt, und wer keine Probleme mit der englischen Sprache hat und „ein bisschen“ programmieren kann (und keinen kleinen Schock bei der gegenwärtigen Architektur mit BackPress bekommt), sollte sich ruhig so frei fühlen, an diesem Projekt mitzuwirken.
Und um das einmal gesagt zu haben: Es wäre auch wirklich schade um bbPress gewesen, denn ich kenne kaum ein hübscheres und brauchbareres „kleines“ Forum.
Was bedeutet WordPress-Integration
Wer über den Einsatz eines bbPress-Forums nachdenkt, ist sicherlich schon einmal über das Wort „WordPress-Integration“ gestolpert. Es ist ein Wort, das gewisse Erwartungen weckt; Erwartungen, dass ein Forum reibungslos innerhalb eines Blogs laufen könnte – sicherlich eine oft gewünschte Möglichkeit.
Das Wort weckt falsche Erwartungen. Es ist verhältnismäßig unglücklich gewählt und bedarf einer gewissen Klärung. Deshalb diese kleine FAQ, die hoffentlich vielen dabei helfen wird, ihre Entscheidung für oder gegen eine Integration vernünftig zu treffen.
Was ist die WordPress-Integration?
Es handelt sich um zwei Möglichkeiten, die in der Regel kombiniert werden:
- Die Benutzerdaten von WordPress und bbPress werden in nur einer Datenbanktabelle gespeichert. Dies geht einher mit der Abbildung von WordPress-Rollen auf Berechtigungen in bbPress.
- Die Anmelde-Cookies von WordPress und bbPress können geteilt werden. Wer an eine bbPress-Foren-Site angemeldet ist, ist an das zugehörige WordPress-Blog angemeldet und umgekehrt.
Darüber hinaus ist oft auch von der „deep integration“ die Rede. Hierbei werden nicht nur die Anmeldedaten geteilt, sondern auch die Funktionen des WordPress-Blogs geladen, damit sie innerhalb eines bbPress-Themes zur Verfügung stehen. Diese Konfiguration ist erheblich komplexer und für ungeübte Betreiber sehr schwierig, darüber hinaus führt sie sowohl zu einer Verlangsamung der Foren-Site als auch zu einer Verlangsamung des Blogs. Wegen der erhöhten Komplexität dieses Themas werde ich hier auf die „deep integration“ nicht weiter eingehen. Wer sie wirklich benötigt oder zu benötigen glaubt, wird aber relativ viel Information in englischer Sprache finden.
Brauche ich ein WordPress-Plugin für die Integration?
Ja. (Dank an infected für den Hinweis.)
Wenn eine Anmeldung an WordPress möglich sein soll, ist ein Plugin für WordPress erforderlich. Dieses setzt einige zusätzliche Cookies, die für bbPress erforderlich sind. Es handelt sich um das Plugin bbPress-Integration.
Übrigens: Das früher auf Seiten von bbPress erforderliche Plugin ist seit bbPress 0.9 nicht mehr erforderlich, weil diese Funktionalität in den Kern von bbPress aufgenommen wurde.
Kann ich ein integriertes bbPress innerhalb des Blogs betreiben?
Nein. (Jedenfalls nicht so einfach.)
Zwar ist es genau diese Möglichkeit, die vom Wortklang „Integration“ verheißen wird, aber sie ist eben nicht damit gemeint. Das Wort „Integration“ ist hier irreführend. Es meint nur die zwischen Blog und Foren-Site geteilte Benutzertabelle und die Möglichkeit einer gemeinsamen Anmeldung für beide Systeme. Die Systeme werden nicht im eigentlichen Sinne des Wortes integriert, sondern mehr aus Benutzersicht „zueinander kompatibel gemacht“. Das ist allerdings ein häufig wünschenswertes Merkmal.
Kann ich WordPress-Themes in einem integrierten bbPress benutzen?
Nein.
Es ist allerdings nicht schwierig, Foren-Site und Blog ähnlich oder gleich aussehen zu lassen, wenn man CSS, PHP und HTML kann. Das hier integrierte Forum bekam sein Design durch kleine Anpassungen am Standard-Theme Kakumei. Ich habe nur die Titelgestaltung geändert, einige Anpassungen im CSS vorgenommen und eine Handvoll Dateien für die Darstellung bestimmter Elemente leicht angepasst. Dieser Vorgang nahm nicht einmal eine Stunde Zeit in Anspruch, das grundlegende Design war ja schon in der Website (die übrigens ein WordPress-Blog ist) fertig.
Aus Benutzersicht entsteht der Eindruck eines integrierten Forums. Technisch sind es allerdings weiterhin zwei verschiedene Systeme, und wenn ich einmal das Design ändere, muss ich es in beiden Systemen anpassen.
Kann ich WordPress-Plugins benutzen?
Nein.
Welchen Sinn hat dann die WordPress-Integration in bbPress?
Die WordPress-Integration bildet die Benutzerdaten zweier Systeme in einer Datenbank ab. Das kann die Administration vereinfachen. Zum Beispiel lassen sich die Rollen in WordPress auf Rollen im bbPress-Forum abbilden, so dass Anwender, die Autorenrechte im Blog haben, automatisch zu Moderatoren im Forum werden. Bei Websites mit einigen Handvoll Benutzern kann durch solche Vereinfachungen der administrative Aufwand für die Benutzereinrichtung halbiert werden – und es kommt nicht zu Übertragungsfehlern bei der doppelten Eingabe der gleichen Daten.
Für den Benutzer mit Rechten im Blog und in der Foren-Site hat die Integration den Vorteil, dass Passwortänderungen erleichtert werden. Das Passwort wird nur einmal geändert und ist sofort in beiden Systemen gültig. Auch das trägt zur Vermeidung von Fehlern und damit verbundener Mehrarbeit bei, es ist außerdem ein Verhalten, wie es ein Anwender mit gutem Recht von einem modernen System erwarten kann.
Auch für das „einfache Forumsmitglied“ ergibt sich ein Vorteil. Ist der Benutzer am Forum angemeldet und will einen Beitrag im Blog kommentieren, so muss er dort nicht noch einmal seinen Nick, seine Mailadresse und seine Homepage angeben, sondern kann gleich mit dem Kommentieren beginnen. Wenn der Blogbetreiber sein WordPress so einrichtet, dass nur registrierte Benutzer kommentieren dürfen und gleichzeitig die Registrierung in WordPress abschaltet, steht die Kommentarmöglichkeit nur den registrierten Benutzern des Forums offen, was wohl manchmal so gewünscht ist.
Kurz zusammengefasst: Auch, wenn das Wort „Integration“ mehr verspricht als es hält, ist eine Website „aus einem Guss“ entstanden. In einigen Fällen mag das die zusätzliche Mühe wert sein, und in anderen nicht.
Funktioniert die Integration in WordPress-MU
Ja.
Da BuddyPress ein mit Plugins angepasstes WordPress-MU ist, sollte sie auch mit BuddyPress funktionieren. Mit beiden Systemen habe ich allerdings keine eigenen Erfahrungen sammeln können.
Was spricht gegen die Integration?
Die Installation mit WordPress-Integration ist erheblich komplexer als die einfache Installation von bbPress als eigenständig laufendes Forum. Der größte Teil der Fragen im englischsprachigen Support-Forum bezieht sich auf die Integration und die damit immer wieder einmal verbundenen Probleme.
Die WordPress-Integration kann ein Sicherheitsrisiko sein. Jeder registrierte Nutzer des Forums erhält auch minimale Rechte (Bearbeitung des Profils und Betrachtung der Startseite) im WordPress-Dashboard, und wenn eine künftige WordPress-Sicherheitslücke einen WordPress-Login erfordert, dann lässt sich diese Hürde vom Angreifer mit Leichtigkeit nehmen – er benötigt nur eine Wegwerf-Mailadresse und eine einfach durchzuführende Registrierung. Diesem Problem lässt sich nur durch weitere Maßnahmen auf Seiten der WordPress-Installation begegnen, etwa durch einen Zugriffsschutz auf das Verzeichnis wp-admin
mit einer .htaccess
-Datei.
Der Upgrade eines integrierten WordPress kann problematischer werden. Wenn sich in der kommenden WordPress-Version die Datenbankstruktur für die Benutzerdaten oder die Erzeugung der Anmelde-Cookies verändern sollte, ist die Integration zerstört. Die bbPress-Entwicklung vollzieht sich langsamer als die WordPress-Entwicklung, und es kann durchaus ein paar Wochen dauern, bis ein bbPress zur Verfügung steht, das zu einer neuen WordPress-Version kompatibel ist. Wenn dann auch noch ein Sicherheitsloch in der vorherigen WordPress-Version besteht und massenhaft ausgebeutet wird, hat man sich mit der Integration ein großes Problem geschaffen.
Abschließendes
In vielen Fällen ist die Integration durchaus die Mühe wert, aber wer darüber nachdenkt, sollte sich schon darüber bewusst sein, was sie leisten kann, was sie nicht leisten kann und welche langfristigen Probleme damit verbunden sein können.
Der gesprengte Bildschirm
Das Standard-Design Kakumei von bbPress 1.0.2 hat einen manchmal ärgerlichen Fehler. Wenn man zu den Foren relativ lange Beschreibungen verfasst – und das ist manchmal gewünscht oder sinnvoll – denn wird der gesamte Text in einer Zeile dargestellt, das Design „zerschossen“ und der Benutzer zum vertikalen Scrollen gezwungen:
Der Grund für diesen Darstellungsfehler ist, dass die Design-Entwickler der Meinung waren, dass diese Zeile nicht umbrechen soll.
Die Lösung ist relativ einfach. Sie kann „auf die Schnelle“ vorgenommen werden, oder aber auch sehr sauber und damit zukunftssicherer.
Zunächst die einfache Lösung:
- Die Datei
bb-templates/kakumei/style.css
im jeweiligen Lieblingseditor öffnen. - Zur Zeile 561 springen. (Diese Angabe bezieht sich auf das gegenwärtig aktuelle bbPress in der Version 1.0.2.)
- Noch einmal vergewissern, ob in dieser Zeile der Text
white-space: nowrap;
steht. - Die Zeile löschen und die geänderte Datei in die bbPress-Installation hochladen.
Danach wird das zuvor „zerschossene“ Forum eher wie beabsichtigt aussehen:
Das Problem mit dieser Herangehensweise ist, dass es sich beim Theme Kakumei um einen Bestandteil von bbPress handelt, und dass die geänderte Datei deshalb leicht beim nächsten Update überschrieben werden kann, wenn die neue Version hochgeladen wird. Es ist sauberer und sicherer, die eigene Arbeit von den Kern-Dateien von bbPress zu trennen. Das ist gar nicht so schwierig:
- Im Verzeichnis
my-templates
ein Unterverzeichnis anlegen. - In der
style.css
ebenfalls die Zeile 2 bearbeiten und den Namen des Themes ändern, zum Beispiel in „Kakumei Fixed“. So ist es einfacher, das Theme im der bbPress-Administration wiederzuerkennen. - Diese bearbeitete
style.css
in das neu angelegte Unterverzeichnis hochladen. - Das neue Theme – ja, so einfach ist es, ein Theme zu erstellen! – sollte jetzt in der bbPress-Administration ausgewählt werden können, und nachdem es ausgewählt wurde, ist das Darstellungsproblem erledigt.
Ich hoffe, dass es manchem hilft, der gerade nach einer Lösung für diesen ärgerlichen Fehler sucht.
Ein Dank für den Hinweis auf dieses Problem geht an believer.
Überarbeitung der Sprachdatei
Download-Link: Überarbeitete Sprachdatei für bbPress 1.0.2
Nach einiger berechtigter Kritik an den Begrifflichkeiten, die ich in meiner bisherigen inoffiziellen deutschen Sprachdatei verwendetete, habe ich mich zu einer Überarbeitung entschlossen. Ursprünglich wollte ich diese mit der nächsten Release noch einmal vollständig sichten und dann veröffentlichen, aber inzwischen ist dieses Werk weit genug gediehen, dass es schlicht falsch wäre, es nicht schon jetzt zu publizieren.
Folgende Änderungen wurden in diese Überarbeitung aufgenommen:
- Korrektur etlicher Rechtschreibfehler;
- Angleichung der Begrifflichkeiten an die gegenwärtige deutsche Sprachdatei für WordPress, da diese beiden Systeme oft gemeinsam eingesetzt werden;
- Aus der „Verwaltung“ wird eine „Administration“, in Navigationslinks abgekürzt zu „Admin“.
- Aus der „Übersicht“ wird ein „Dashboard“, obwohl der Begriff unglücklich ist.
- Aus dem „Erscheinungsbild“ wird ein „Design“, und die „Designs“ sind jetzt „Themes“.
- Aus den „Erweiterungen“ werden „Plugins“, ein zwar unglückliches, aber im Computerbereich gut eingebürgertes Wort.
- Viele weitere Begriffe sind, wo immer dies möglich war, an die Begriffe in der gegenwärtigen deutschen WordPress-Version angepasst worden, lediglich die zahlreichen Rechtschreibfehler aus dieser Version wurden nicht von mir übernommen.
- Korrektur inkonsistenter Begrifflichkeiten, insbesondere bei der Eindeutschung des Installationsskriptes und im Zusammenhang mit der WordPress-Integration; und für viele vielleicht das Wichtigste:
- Abkehr von bisherigen Übersetzungen und sprachliche Neuentscheidungen, die da wären:
- Der „Depp“ wird ein „Troll“, aber das soll nicht heißen, dass Trolle keine Deppen wären;
- die „Bretter“ werden zu „Foren“, was dem Sprachgebrauch in anderer Forensoftware entspricht;
- die Gesamtheit der Foren (engl. „forums“) wird zu einer „Foren-Site“, was vielleicht unglücklich gewählt ist, aber weniger zu Missverständnissen als der Begriff „Bretter“ führen wird.
Gerade die letztere sprachliche Entscheidung war eine „schwere Geburt“. Das Wort „Website“ kann missverständlich sein, wenn ein bbPress im Rahmen einer größeren Website betrieben wird, deshalb das etwas gekünstelte „Foren-Site“. Bessere Vorschläge sind mir ebenso willkommen wie Hinweise auf verbliebene Rechtschreibfehler und missverständliche Ausdrucksweisen.
WordPress XSS-Hack bei integriertem bbPress
Der beim fiesen Admin beschriebene, aktuelle XSS-Hack für WordPress betrifft nicht nur WordPress-Blogs mit einer Benutzerregistrierung, sondern auch jedes WordPress mit einem integrierten bbPress-Forum, selbst wenn die Benutzerregistrierung im Blog abgeschaltet wurde.
Es handelt sich bei der bbPress-Integration ja gerade um die Möglichkeit, dass sich WordPress und bbPress eine gemeinsame Benutzerdatenbank teilen. Das hat nicht nur den angenehmen Effekt, dass ein in bbPress registrierter und angemeldeter Benutzer beim Kommentieren nicht mehr seine Daten beim Kommentieren eines Blogeintrages eingeben muss, sondern er erhält auch einen Zugriff auf das WordPress-Dashboard. Damit ist auch der beschriebene Hack möglich.
Angesichts der Tatsache, dass dieser Hack sehr einfach in seiner Durchführung und auch leicht mit einem Skript automatisierbar ist, und angesichts der Tatsache, dass es schon betroffene Blogs gibt, sollte bei jedem WordPress-Anwender, der eine Benutzerregistierung ermöglicht oder ein eingebettetes bbPress-Forum betreibt, die Alarmglocke unüberhörbar sein. Ein Upgrade auf die aktuelle WordPress-Version 2.8.4 ist dringend erforderlich.