PHP 5.3 und bbPress: Fehlermeldungen

In der Kombination von PHP 5.3 und bbPress in der aktuellen Version 1.0.2 kommt es immer wieder zu hässlichen Fehlermeldungen, insbesondere, wenn man eine lokale Installation unter XAMPP ausprobiert (im Zitat sind die Fehlermeldungen ein wenig gekürzt):

Deprecated: Assigning the return value of new by reference is deprecated in […] bb-settings.php on line 186

Deprecated: Assigning the return value of new by reference is deprecated in […] /bb-includes/backpress/functions.wp-object-cache.php on line 108

Deprecated: Assigning the return value of new by reference is deprecated in […] /bb-includes/backpress/pomo/mo.php on line 171

Deprecated: Assigning the return value of new by reference is deprecated in […] /bb-includes&/functions.bb-l10n.php on line 484

Deprecated: Assigning the return value of new by reference is deprecated in […] /bb-includes/backpress/class.wp-taxonomy.php on line 581

Deprecated: Assigning the return value of new by reference is deprecated in […] /bb-admin/includes/class.bb-install.php on line 1280

Warning: Cannot modify header information – headers already sent by (output started at […] /bb-settings.php:186) in […] /bb-admin/includes/class.bb-install.php on line 390

Warning: Cannot modify header information – headers already sent by (output started at […] /bb-settings.php:186) in […] /bb-includes/functions.bb-core.php on line 1101

Da solche Fehler bereits bei der Installation auftreten, ist die Situation für einen Neueinsteiger sehr entmutigend und bbPress erweckt nicht gerade den Eindruck, eine im täglichen Betrieb problemlos laufende Software zu sein. Der Fehler ist unter den Entwicklern schon lange bekannt und auch schon seit acht Monaten behoben, aber leider wird die Bugfix-Version schon seit einiger Zeit nicht veröffentlicht. Deshalb hier eine ganz schnelle und einfache Abhilfe, mit der sich bbPress installieren und betreiben lässt:

  1. Zusehen, dass man etwas Ruhe hat und sich auf die folgenden Schritte konzentrieren kann. Dies gilt vor allem für Menschen, denen PHP-Quelltexte wie „böhmische Dörfer“ vorkommen. Nicht von den unverständlichen Quelltexten einschüchtern lassen, es ist alles halb so wild!
  2. Die Datei bb-admin/includes/class.bb-install.php im Editor öffnen.
  3. Dort die Zeile suchen, die
    $bbdb = new BPDB_Multi
    enthält. Diesen Text in
    $bbdb =& new BPDB_Multi
    ändern, die so geänderte Datei speichern.
  4. Die Datei bb-admin/install.php im Editor öffnen.
  5. Dort die Zeile suchen, die den Text
    error_reporting
    enthält. Sie sollte so aussehen:
    error_reporting (E_ALL ^ E_NOTICE);
    diesen Text in
    error_reporting (E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);
    ändern, die so geänderte Datei speichern.
  6. Die Datei bb-includes/functions.bb-l10n.php im Editor öffnen
  7. Dort die Zeile suchen, die den Text
    $empty = new Translations
    enthält. Diesen Text in
    $empty =& new Translations
    ändern, die so geänderte Datei speichern.
  8. Die Datei bb-load.php im Editor öffnen.
  9. Dort die Zeile sichen, die den Text
    error_reporting enthält.
    Diese Zeile sollte so aussehen:
    error_reporting (E_ALL ^ E_NOTICE);
    diesen Text in
    error_reporting (E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);
    ändern, die so geänderte Datei speichern.

Nach dem Hochladen der geänderten Dateien auf dem Webserver oder dem Kopieren der geänderten Dateien in das Verzeichnis mit der bbPress-Installation sollte alles problemlos funktionieren. Eventuelle Fragen, warum sich die Veröffentlichung einer fehlerbereinigten Version seit vielen Monaten verzögert, bitte in höflicher englischer Sprache an die Entwickler oder am besten gleich an Matt Mullenweg senden.

Wer aus dem erwartungsgemäßen Schweigen von dieser Seite den gleichen Schluss zieht wie ich, nämlich, dass das Projekt bbPress in der jetzigen Form für die Macher von WordPress nicht weiter erwünscht ist und deshalb still und heimlich begraben werden soll, während andere Projekte mit großem Eifer und aufdringlichem Tamtam vorangetrieben werden, sollte sich noch einmal überlegen, ob bbPress angesichts einer derart trüben Zukunft wirklich die richtige Wahl ist. Ich hoffe ja, dass ich derartige Warnungen in naher Zukunft relativieren muss, aber ich hoffe das für meinen Geschmack schon viel zu lange.

Plötzlich ist alles wieder da…

Zwar sind die offenen Fehler längst behoben und bbPress 1.0.3 könnte zum allgemeinen Segen für alle Anwender endlich offiziell veröffentlicht werden, aber es wird und wird nicht veröffentlicht. Da erleben jene Menschen, die die immer noch „offizielle“ stabile Version 1.0.2 verwenden, hin und wieder einen der sehr ernsthaften und ärgerlichen Fehler in dieser offiziellen, stabilen Version:

Ich musste mich plötzlich mit dieser sehr seltsamen Angelegenheit auseinandersetzen. Alle gelöschten Beiträge meines Forums wurden automatisch wiederhergestellt. Es war so, dass das Feld post_status in der Tabelle bb_posts für alle Beiträge auf 0 zurückgesetzt wurde.

Ja, was ph23man recht ausführlich und vorbildlich präzise im offiziellen Support-Forum für bbPress berichtet, ist ein längst bekannter und in der Entwicklerversion auch schon lange behobener Fehler in bbPress 1.0.2. Wenn ein Thema gelöscht wird, zu dem keinerlei Beiträge vorliegen, denn werden sämtliche gelöschten Beiträge – auch solche aus anderen Themen – wiederhergestellt. So etwas kann bei der Forumsmoderation schon einmal passieren, und der Fehler sorgt dann für oft erheblichen Nacharbeitsbedarf.

Wie gesagt, dieser Fehler ist eigentlich schon behoben, aber niemand veröffentlicht die längst überfällige Bugfix-Version. Zurzeit scheint beim bbPress-Team unter der Führung von Matt Mullenweg nicht einmal jemand zu wissen, wer für eine solche Veröffentlichung zuständig wäre. Da weiß sich chrishajer als Moderator des Support-Forums auch nicht anders zu helfen, als den folgenden Hinweis zu geben:

Der gegenwärtige Stand der Entwicklerversion ist wirklich stabil. Wenn du ihn über subversion installieren kannst, wäre es das beste, denn dann bekommst du auch die erforderliche Version von BackPress. Wenn du die Entwicklerversion von trac.bbpress.org abgreifst, wirst du BackPress (oder, wie ich glaube, auch Akismet) nicht erhalten.

Sicherlich, so bekommt man eine fehlerbereinigte Version von bbPress, wenn man es denn schafft, einen svn-Client zu bedienen (was nicht besonders schwierig ist). Aus der Sicht des Projektmanagements ist das aber eine der seltsamsten Empfehlungen, die man sich nur vorstellen kann. Was in dieser Empfehlung mitschwingt, ist die Aussage: „Wir haben den Fehler zwar schon längst behoben, aber wir haben es nicht geschafft, unter uns menschliche und kommunikative Strukturen aufzubauen, die es uns ermöglichen, eine für die Anwenderschaft nützliche, weitgehend fehlerbereinigte und längst vorhandene Version von bbPress offiziell als Release herauszugeben, und deshalb nehmt doch lieber eine Entwicklerversion, obwohl diese möglicherweise mit dem einen oder anderen Plugin Probleme macht und in die meisten anderen Sprachen als Englisch nicht vollständig übersetzt wurde“. Bei keinem anderen Projekt würde jemand eine derartige Empfehlung geben, jedenfalls nicht an Menschen, die nicht mitprogrammieren oder doch wenigstens Fehler suchen wollen. bbPress schwimmt immer noch in sehr trüben Gewässern, und dieser Zustand scheint kein Ende zu nehmen.

Und einmal ganz ehrlich gesagt: Das finde ich schade, denn bbPress ist eine gute „kleine“ Forensoftware, die eine wichtige Lücke unter den ganzen großen, mit Features überladenen und ressourcenhungrigen BB-Projekten ausfüllt.

bbPress 1.0.3 sollte bald kommen…

Der folgende Screenshot stammt aus dem Bugtracker für bbPress und verkündet eine wirklich gute Botschaft:

Alle Tickets sind abgearbeitet, bbPress 1.0.3 ist im Prinzip fertig

Nein, nicht die Tatsache, dass bbPress 3 Monate über der Zeit ist, soll hier die gute Nachricht sein, sondern die Tatsache, dass alle offenen Tickets abgearbeitet sind, dass bbPress 1.0.3 also so gut wie fertig ist. Natürlich sollte der kleinen Gemeinschaft der bbPress-Anwender noch Gelegenheit zum Testen gegeben werden, denn wir mögen alle eine neue Release, die nicht gleich schon wieder einen Update erfordert.

Erfreulicherweise hat sich bbPress 1.0.x als recht stabil erwiesen. Es gab in den letzten gut zwölf Monaten keine schweren Sicherheitsprobleme, die es erfordert hätten, dass mit heißer Nadel ein Fehler gefixt werden muss. So, wie es momentan aussieht, besteht kein Grund zur Eile, weder in der Fertigstellung der Release, noch bei der Installation der neuen Version, wenn sie dann fertig ist. In der Zeit mit bbPress 1.0.2 gab es in meinen Projekten drei erfolgreiche Angriffe auf WordPress-Installationen, und diese waren auf dem neuesten Stand, aber die beiden bbPress-Foren, die ich betreibe, haben sich als sehr resistent erwiesen. Das kann natürlich auch ein wenig daran liegen, dass bbPress ein „Nischenprodukt“ ist, aber meine Erfahrung lehrt mich, dass jede Websoftware mit einer bekannten Schwachstelle irgendwann einmal angegriffen wird. Die von einigen Menschen so sehr belächelte Einfachheit von bbPress, die Konzentration auf die Kernfunktionalität eines Forums, ist sicherlich auch ein Grund für diese Robustheit – denn in Sachen Software ist Komplexität das Gegenteil von Sicherheit. Das ist übrigens ein Grund dafür, weshalb man bei jedem Plugin (das ja die Komplexität der Installation erhöht) darüber nachdenken sollte, ob es für die geforderte Nutzung wirklich erforderlich oder nützlich ist.

Das heißt allerdings nicht, dass bbPress 1.0.2 frei von Fehlern gewesen wäre; es gab eine Menge kleiner, ärgerlicher Fehler (mit denen man ganz gut leben kann), einige Schwächen und auch einige richtig schwere Fehler, die in der kommenden Version 1.0.3 behoben sein werden. Einige davon seien hier als Beispiele aufgeführt:

  • Beim Löschen eines Themas wurden unter Umständen auch Posts aus anderen Themen gelöscht.
    Dieses Problem trat unter anderem auf, wenn in einem neu eröffneten Thema (zum Beispiel einer Spam) der initiale Beitrag gelöscht wurde und anschließend das leere Thema gelöscht wurde, was durchaus passieren kann. Das Problem war insofern „nicht so schwer“, weil ein gelöschter Beitrag in bbPress nicht verloren geht, sondern als gelöscht markiert wird und wiederhergestellt werden kann. Aber die Nacharbeit, die hinterher durch das Wiederherstellen fehlerhaft gelöschter Beiträge entsteht, ist schon sehr ärgerlich. Bei einem wenig frequentierten Forum konnte das Zurückspielen eines Backups die bessere Lösung mit dem geringeren Aufwand sein.
  • Eine Übersetzung von Plugin-Namen und -Beschreibungen war nicht möglich
  • Warnungen im Zusammenhang mit aktuellen PHP-Versionen
    Einige Programmiertechniken in bbPress funktionierten zwar unter aktuellen PHP-Versionen, führten aber zur Ausgabe von Warnungen, dass veraltete Sprachkonstrukte verwendet werden. Diese Warnungen konnten zwar abgeschaltet werden, aber für einen nicht so geübten Nutzer ist eine Software, die „Fehlermeldungen“ ausgibt, zunächst unbrauchbar.
  • Fehlerhafte und schwache Suchfunktion
    Die Forensuche hatte mehrere Fehler. Zum Einen waren die Suchergebnisse oft schwach, zum anderen wurden in den Suchergebnissen gelegentlich fehlerhafte Links auf die gefundenen Themen und Beiträge ausgegeben. Die Suche enthält viele Detailverbesserungen, am bemerkenswertesten vielleicht, dass die Ergebnisse jetzt auch nach Datum sortiert werden können.
  • Falsche Verzeichnisrechte
    Die Verzeichnisse my-plugins und my-templates wurden bei der Installation mit falschen Zugriffsrechten angelegt, so dass eine nachträgliche Korrektur erforderlich wurde.

Diese und viele andere ärgerliche Fehler werden mit bbPress 1.0.3 der Vergangenheit angehören. Von daher wünsche ich mir sehr, dass es bald zur Veröffentlichung kommt – ich habe aber leider so viel „um die Ohren“, dass sich die Fertigstellung meiner neuen Sprachdatei ein wenig hinziehen kann. Auf jeden Fall will ich versuchen, dass die Übersetzung spätestens eine Woche nach der Veröffentlichung fertig ist – und nicht drei Monate über die Zeit geht…

Aber wer bbPress verwendet, hat ja ein bisschen Geduld gelernt, und es ist sogar möglich, dass sich die offizielle Release noch einige Wochen hinzieht.

Die Kosten der Deep Integration

Wer ernsthaft über eine deep integration von WordPress und bbPress nachdenkt, sollte besser noch einmal nachdenken. Sicher, die deep integration kostet kein Geld, aber sie verursacht eine immense Serverlast und wirkt sich nachteilig auf die Performanz einer so realisierten Website aus.

Es ist nicht nur so, dass bei jedem Aufruf der Foren der gesamte „WordPress-Apparat“ mitgeladen wird, es werden dabei auch Datenbankabfragen ausgeführt. Was das in der Praxis bedeutet, kann in einem sehr ausführlichen Beitrag im englischsprachigen bbPress-Forum nachgelesen werden. Hier nur ein ganz kurzer Eindruck:

  • WordPress 3.0 mit etlichen Plugins: 27 Datenbankabfragen für eine Seitendarstellung
  • bbPress 1.0.2 mit etlichen Plugins: 29 Datenbankabfragen für eine Seitendarstellung
  • Die deep integration dieses bbPress 1.0.2 in WordPress 3.0: 56 Datenbankabfragen für eine Seitendarstellung

(Hinter „mit etlichen Plugins“ verbirgt sich, dass es weit über die Standardinstallation hinausgeht.)

Der erhöhte Speicherbedarf für den Webserver ist hierbei noch nicht einmal berücksichtigt, er führt zu einer weiteren Erhöhung der Last.

Eine Website mit wenigen Besuchern wird bei einer deep integration relativ langsam, eine Website mit einer nennenswerten Anzahl Besuchern wird zäh und kann sogar zu sichtbaren Fehlfunktionen neigen, wenn der virtuelle Speicher nicht ausreicht. Dabei ist es nicht möglich, für bbPress-Foren Caching einzusetzen – zum einen, weil es dafür zurzeit noch kein Plugin gibt, zum anderen ist es aber bei den häufig wechselnden Ansichten eines aktiv benutzten Forum auch gar nicht sinnvoll.

Deshalb: Wer über deep integration nachdenkt, sollte noch einmal nachdenken, ob sich die gewünschten Anforderungen in einer weniger belastenden Weise erfüllen lassen oder ob sinnvolle Abstriche daran gemacht werden können. Eine langsame und zu Fehlfunktionen neigende Website ist eines der wirksamsten Mittel, Nutzer und Leser fernzuhalten – und das wird niemals gewünscht sein. In der Regel ist es relativ einfach, das verwendete WordPress-Theme für bbPress „nachzubauen“. Der Lohn für diesen Aufwand liegt in einem schlanken und schnellen Forum, dass auch größeren Lastspitzen gewachsen ist, ohne dabei langsam zu werden.

Wenn diese Vorgehensweise nicht ausreicht, muss an die hinreichende Ausstattung des Serverrechners (mit RAM, Rechenleistung etc.) gedacht werden, auf dem die Website mit einer deep integration laufen soll. Ein normaler virtual server wird hierzu nahezu niemals geeignet sein. An dieser Stelle verursacht die deep integration dann doch monetäre Kosten. Auch sollte der MySQL von jemanden optimiert werden, der sich wirklich damit auskennt – und das Ergebnis dieser Optimierung sollte im Betrieb beobachtet und gegenenfalls nachgebessert werden. Diese Kosten und Mühen kann man sich ersparen, wenn man es schafft, die deep integration zu meiden.

Support für bbPress 0.9 vorzeitig eingestellt

Auch, um einmal einen Eindruck in den „kommunikativen“ Stil zu geben, der mittlerweile bei den Verantwortlichen für bbPress gang und gäbe ist, hier eine schnelle Übersetzung des heutigen Beitrages von kevinjohngallagher im offiziellen Support-Forum für bbPress:

Die jüngste Version von bbPress 0.9 (bbPress 0.9.0.7) wurde im Trac gelöscht. Das bedeutet in der Tat, dass der Support für den bbPress-Zweig 0.9 beendet wurde.

Diese Änderung (besser wäre: Entscheidung) wurde vor sechs Wochen getroffen.

  • Es gab hierzu keine Meldung im Blog.
  • Es wurde kein Thema im Forum eröffnet.
  • Es wurde kein Post verfasst.
  • Ihr wurdet über diese Änderung nicht informiert.

Dank an Gautam, der eine Menge wunderbarer und ungedankter Arbeit am bbPress-Zweig 1.0.3 geleistet hat. Er veröffentlichte diese Information an Position Zwanzig in einem Thema, das nicht für würdig empfunden wurde, fixiert [und damit in die allgemeine Aufmerksamkeit gebracht] zu werden:

Schaut euch http://trac.bbpress.org/ticket/1174#comment:3 an:
Das bedeutet, dass der 0.9-Zweig nicht länger unterstützt wird.

- Gautam

Gautam, wir danken dir für deinen beispielhaften und beständigen Anteil an der Entwicklung und für deine Versuche, die bbPress-Gemeinschaft auf dem Laufenden zu halten.

Danke, Kumpel!

Ich habe schon an anderer Stelle angemerkt, dass ich angesichts des gegenwärtigen „WordPress-Stiles“ in der Kommunikation, der sich bei bbPress unter der Leitung von Matt Mullenweg eingeschlichen hat, niemanden mehr empfehlen würde, für sein Projekt bbPress einzusetzen. Auch mein eigenes Engagement wird in Kürze beendet sein, wenn nicht eine ganz außergewöhnliche Wandlung in den jetzigen Strukturen der bbPress-Verantwortlichen eintritt oder wenn nicht jemand einen Fork des jetzigen Standes mit dem Ziel einer von WordPress unabhängigen, Stand-alone-Plattform wagt. (Ich kann diesen Fork nicht bewältigen, sonst würde ich es tun.)

Die Unterstützung von bbPress 0.9 wurde bis zum Ende dieses Jahres zugesagt. Viele Anwender sind bei bbPress 0.9 geblieben, weil es die doppelte Geschwindigkeit, den halben Ressourcenverbrauch und 30 Prozent weniger Queries an die Datenbank benötigt, um die gleiche Funktion wie bbPress 1.0 bereitzustellen – und dies mit weniger kleinen, ärgerlichen Fehlern. Diese Menschen über eine derartige Entscheidung nicht zu informieren, ist schon bemerkenswert kalt. Wer glaubt, dass in einem solchen Umfeld eine Software entstehen kann, die sich an den Bedürfnissen von Menschen orientiert, die diese Software für ihre Pläne und Projekte nutzen wollen, hat sich geschnitten. Stattdessen träumt Matt Mullenweg seine feuchten Träume von der „Weltherrschaft“ durch PHP-Skripte. Wo dies im Falle WordPress hingeführt hat, lässt sich mit einer einzigen Google-Suche herausbekommen, die zurzeit in deutscher Sprache mehr als 25.000 Ergebnisse liefert. Hier nur ein Zitat aus dem ersten Treffer dieser Suche:

Als ich WP zum ersten Mal herunterlud, war die Zip-Datei gerade mal 310 KB groß. Die aktuelle Version 2.8.4 wiegt gezippt 2,24 MB. Natürlich möchte auch ich nicht zu WP 1.2 zurück, ich möchte nur ganz höflich darauf hinweisen, dass unser liebes Kind WP fett geworden ist. Und das WP-Dashboard wird auch immer langsamer. Wirklich aufgefallen ist mir die Veränderung an WP aber erst vor wenigen Tagen, als ich die Software zum x-ten Mal auf einem Server installierte und gerade einrichten wollte: Fatal Error, Allowed memory size exhausted. Hab ich vorher in fünf Jahren nicht einmal erlebt.

Das ist auch ein Blick in die Zukunft von bbPress, wenn bbPress überhaupt eine Zukunft in diesem Umfeld gegeben wird.

Mögliche Probleme mit WordPress 3.0

Einige Anwender der gegenwärtigen bbPress-Version 1.0.2 haben Probleme mit dem zweiten Release-Kandidaten von WordPress 3.0 und einer geteilten Nutzerdatenbank zwischen Blog und Foren. Diese Probleme äußern sich darin, dass eine Benutzerregistrierung im Forum nicht mehr möglich ist, während die Registrierung im Blog funktioniert. Allerdings wird den im WordPress-Blog registrierten Benutzer in bbPress die Rolle „inaktiv“ zugewiesen, so dass das Forum für diese Benutzer nicht benutzbar ist. Deshalb ist diese Form der Registrierung nicht als provisorische Lösung zu empfehlen, da sie unter Umständen erhebliche administrative Nacharbeit bedeutet.

Das Problem äußert sich darin, dass bei der (korrekten) Registrierung die Meldung angezeigt wird, dass die Angabe einer E-Mail-Adresse erforderlich ist. Es wird berichtet, dass unter nicht reproduzierbaren Umständen gelegentlich auch eine Registrierung gelingt. Es sieht aus, als würde beim Registrierungsvorgang die Mailadresse verloren gehen.

Die Ursachen dieses Problemes sind zurzeit unklar. Die Benutzerdatenbank in WordPress 3.0 ist gegenüber der gegenwärtigen Version 2.9.2 unverändert. In einigen Fällen tritt dieses Problem auf, in anderen nicht.

Auf dem Hintergrund dieser Probleme empfehle ich jeden Nutzer eines „integrierten“ bbPress, vor dem kommenden Upgrade auf WordPress 3.0 auf dem verwendeten Server (es kann sich durchaus um ein obskures Problem mit der PHP-Version, der verwendeten MySQL oder ähnlichen Komponenten handeln) eine Testinstallation durchzuführen und genau zu untersuchen, ob alle Funktionen in gewünschter Weise arbeiten. Dabei sollten auch einige Benutzerregisterungen durchgeführt werden, um zu überprüfen, ob diese korrekt sind und ob die Mail mit dem Passwort auch an die angegebene Mailadresse gesendet wird. Solche Fehler werden im Forumsbetrieb kaum auffallen, wenn sie nicht von betroffenen Benutzern nach einer gescheiterten Registrierung mitgeteilt werden. Daher ist es umso wichtiger, hier Sicherheit zu erlangen.

Generell empfehle ich, mit dem Upgrade auf WordPress 3.0 zu warten, bis der Upgrade entweder durch ein Sicherheitsproblem von WordPress 2.9.x erzwungen wird oder bis der problemlose Betrieb aller Komponenten der Website gesichert ist. Sollte hier ein Problem in bbPress vorliegen, so wird es hoffentlich schnell behoben. Auch sollte nicht vergessen werden, dass es sich beim WordPress, das zu diesen Problemen führt, noch um einen Release-Kandidaten handelt und keineswegs um eine „richtige“ Release – es können also durchaus noch kleine Fehler darin stecken, die in den nächsten Tagen behoben werden. Generell ist vom Betrieb einer „richtigen“ Website auf einem „richtigen“ Server mit einem Release-Kandidaten oder gar einer Beta-Version abzuraten.