wBB 2.3.x und PHP 5.3

Es gibt noch eine relativ große wBB 2.x.x (WoltLabBurningBoard) Forengemeinde, was mich natürlich erfreut, da es alles in allem eine wirklich gute Forensoftware auch heute noch ist. Viele stehen nun vor dem Problem, dass auf ihren Webservern auf PHP 5.3 doch so langsam einmal aktualisiert wird. Die Version ist bereits vor einem Jahr erschienen und da ist es fast nur logisch, dass viele Provider auf diese Version aktualisieren.

Wer nun Angst um den Weiterbetrieb seines Forums hat den kann ich an dieser stelle beruhigen. Grundsätzlich funktioniert das Forum natürlich auch weiter, auch wenn es an einigen Stellen Meldungen gibt, die nun auftauchen.

Für die Hackentwickler ist vor allem Folgendes interessant, die Zuweisung der Referenz new muss nun ohne „&“ erfolgen. Des Weiteren wurden die Funktionen: ereg_replace() und split() als unerwünscht veraltet deklariert. Eine komplette Übersicht an abgelehnten Funktionen sind hier zu finden: Deprecated features in PHP 5.3.x

Um den Umstieg zu erleichtern habe ich im Folgenden einmal alle relevanten Codeänderungen aufgelistet. Zu Testzwecken habe ich auf PHP 5.3.3 Basis ein leeres wBB 2.3.6 pl2 aufgesetzt.

1.) Dies betrifft die folgenden Dateien:
./addreply.php
./board.php
./calendar.php
./editpost.php
./global.php
./index.php
./misc.php
./newthread.php
./pms.php
./print.php
./profile.php
./register.php
./report.php
./search.php
./thread.php
./usercp.php
./usergroups.php
./wiw.php
./acp/avatar.php
./acp/group.php
./acp/lib/functions.php

Suche in den Dateien nach:

und ersetze es durch folgendes:

2.) Suche in der Datei: ./acp/lib/class_zip.php nach:

Und ersetze es durch folgendes:

Suche weiter nach:

Und ersetze es durch folgendes:

Suche weiter nach:

Und ersetze es durch folgendes:

3.) Dies betrifft die folgenden Dateien:
./global.php
./acp/acp_tpl.php (im Ordner /extras vom Forumpaket)
./acp/global.php
./acp/setup.php
./archive/global.php

Suche nach folgendem:

Und ersetze es durch folgendes:

4.) Suche in der Datei: ./modcp.php nach:

Ersetze es durch Folgendes:

5.) Suche in der Datei: ./acp/lib/functions.php nach:

Und ersetze es durch folgendes:

Das war es auch schon.

Autor: Michael Schüler

Ich befasse mich derzeit verstärkt mit dem Thema Fotografie und bin ebenso als Entwickler im Web unterwegs. Dabei interessieren mich verstärkt Themen wie die Modifikation und Erweiterung von Forensoftware sowie Blogsoftware, wie bspweise WordPress.

19 Kommentare

  1. Danke für die Arbeit die du dir gemacht hast und auch für das veröffentlichen der selbigen, ich werd dich dann mal die Tage hinsetzen und mein Board PHP 5.3 fähig machen.

  2. Das war meine letzte Hoffnung. Diese Anleitung mag funktionieren doch findet Sie bei mir keine Anwendung. Ich nutze php5.3.3 und das WBB 2.3.6 pl2.

    Trotzdem danke, eine gute Anleitung.

  3. Hallo Michael, Erst mal ein großes Lob ür deine Arbeit.
    Ich habe ein wbb2er Hilfeboard und nun auch erstmalig deine Anleitung durchführen dürfen.
    Es funktioniert eigendlich alles bis auf den eMailversand.
    Einige Mitglieder bekommen eine Mail vom Board viele aber nicht.
    Ich habe daraufhin ein jungfräuliches Board mit deinen Änderungen erstellt
    und auch hier werden die Mails scheinbar korrekt abgeschickt, kommen aber auch nicht an.
    Inerhalb des Boards werden aber alle Variablen korrekt übertragen.
    Zum Schluß kommt aber doch JavaScipt mit ins Spiel und da scheint es zu hapern.
    Da ich mich noch nicht so gut mit JavaScript auskenne,
    möchte ich hier mal nachfragen, ob das Problem eMail-Versand ein allgemeines Problem ist
    und wenn ja ob es schon eine Lösung gibt.

    mfG
    Haumi

  4. Halloo zusammen,

    auch bei mir steht die Umstellung auf die nbeue php-Version an und ich hoffe, dass das Forum danach noch funktioniert. Allerdings habe ich das Foren-Paket von damals nicht mehr, ist ja auch schon eine ganze Weile her. Gibt es die Möglichkeit, die Datei ./acp/acp_tpl.php von jemanden zugesandt zu bekommen?

    Danke
    Andreas

  5. Hallo !

    Auch bei mir stehen die Änderungen an.
    Wozu soll die /acp/acp_tpl.php abgeändert werden,
    wenn die Dateien eh nicht auf dem FTP-server sind ?
    lg+danke für die Infos !

  6. Hi,

    habe in Zeile 197 der global.php Folgende Zeile:

    if(!ereg(’shoutbox‘,addslashes($REQUEST_URI)) && !ereg(‚lcd‘,addslashes($REQUEST_URI))) {

    Bekomme in der Log Datei immer Warnungen die wie folgt lautet:

    PHP Deprecated: Function ereg() is deprecated in /var/www/vhosts/michastechonline.de/httpdocs/global.php on line 197

    Wie müßte die Zeile denn genau lauten? ereg( habe ich schon in preg_match( probiert, bekomme dann ne andere Meldung. 🙁

    Lg,
    Micha.

  7. Hi,

    super Zusammenfassung, vielen Dank!

    Wir setzen das WBB 2.3.6 mit der JGS-Portal Version 3.1.0 ein.

    Bei uns kommt es zu zwei weiteren Meldungen im Log-file, die gefixt werden müssen.

    1) Datei: functions.php, Zeile „return strlen($string);“
    Hier wird unter im Log folgende Meldung ausgegeben:

    PHP Warning: strlen() expects parameter 1 to be string, array given in /var/www/???/html/Forum/acp/lib/functions.php on line 2779

    Ab PHP-Version 5.3 gibt es im Bezug auf strlen() und als Parameter übergebene Arrays eine Änderung, die nun abgefangen werden sollte. Ich habe die o. a. Zeile ersetzt:

    if (is_string($string)) {
    return strlen($string);
    } else {
    return 0;
    }

    Nun werden Arrays abgefangen und als Länge der Wert 0 zurückgegeben. Bei übergebenen Strings bleibt alles wie gehabt.

    2) Datei: jgs_portal_log_bildschirm.php

    Dies tritt nur bei Verwendung des JGS Portals auf!

    Hier wird in der Zeile „if($aufloesung == „“ || !eregi(„x“,$aufloesung)){“ die veraltete function eregi benutzt.

    Ich habe die Zeile durch „if($aufloesung == „“ || !preg_match(„/x/“,$aufloesung)){“ ersetzt.

    Mehr ist mir bisher noch nicht aufgefallen.

    Grüße
    Michael

  8. Hallo Michael.

    Sehr gute zusammenfassung, vielen Dank dafür.

    Bei den Dateien der wbb-software (wbb2.3.6pl2) habe ich alle Änderungen soweit durchgeführt, aber einige Dateien von Hacks´s bzw. Addons wollen noch nicht so richtig.

    Da habe ich z.B.: den Hack (Counter) eingebaut. Eigentlich für das wbb2.1.X, dieser läuft bei PHP-Version: 5.2.17 einwandfrei, aber wenn ich auf PHP-Version: 5.3.21 umstelle kommen Fehlermeldungen. Diese betreffen alle nur die Datumsangabe.

    Warning: date() [function.date]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‚Europe/Berlin‘ for ‚CET/1.0/no DST‘ instead in /home/s2verdbk/www.vertigo4way.de/wbb2/counter.php on line 5

    Hier mal die erste 10 Zeilen aus der counter.php:

    <?php
    $ipsperre="6000";
    $deliptime = time() – $ipsperre;
    $todayarray = array(
    date("d", time()),
    date("m", time()),
    date("Y", time())
    );
    $yesterdayarray = array(
    date("d", (time()-86400)),
    date("m", (time()-86400)),
    date("Y", (time()-86400))
    );

    Das betrifft die folgenden Zeilen: 5,6,7,10,11,12,15,16,69,

    —————————————————————————

    Bei dem Hack: "CT-Security-Free-4-0-4" Kommt es zu folgender Fehlermeldung:

    /acp/lib/ct_funktion.inc.php on line 142

    Die Codezeile aus dieser Datei sieht so aus:

    139 $requesturi = $_SERVER['REQUEST_URI'];
    140 $remoteport = $_SERVER['REMOTE_PORT'];
    141 $request_method = $_SERVER['REQUEST_METHOD'];
    142 $datum = date("d.m.Y-H:i:s");
    143 $infoblock = "***";
    144 $block = false;
    145 $cblock = false;

    —————————————————————————

    Bei einer Originaldatei der wbb-software "acp/lib/session.php" heißt es:

    acp/lib/session.php on line 228

    (und noch mal für die Zeile 230)

    Die Codezeile aus dieser Datei sieht so aus:

    226 }
    227 }
    228 $curdate = strftime("%m %d %Y",time());
    229 $date = explode(" ", $curdate);
    230 $timestamp = mktime(0,0,0,$date[0],$date[1],$date[2]);
    231 $wbbuserdata['firstvisit'] = get_firstvisit($wbbuserdata['userid']);

    —————————————————————————

    Bei einer Originaldatei der wbb-software "acp/lib/functions.php" heißt es:

    acp/lib/functions.php on line 157

    (Dieser wird mir gleich 3x angezeigt, immer mit dem gleichen Text)

    Die Codezeile aus dieser Datei sieht so aus:

    154 */
    155 function formatdate($timeformat, $timestamp, $replacetoday = 0) {
    156 global $wbbuserdata, $lang;
    157 $summertime = date('I', $timestamp) * 3600;
    158 $timestamp += 3600 * intval($wbbuserdata['timezoneoffset']) + $summertime;
    159 if ($replacetoday == 1) {
    160 if (gmdate('Ymd', $timestamp) == gmdate('Ymd', time() + 3600 * intval($wbbuserdata['timezoneoffset']) + $summertime)) {

    —————————————————————————

    Bei dem Hack: "HM_portal3.1.4" Kommt es zu folgender Fehlermeldung:

    /hmportal.php on line 132

    Die Codezeile aus dieser Datei sieht so aus:

    130 // TimeArea by rcgracing.com
    131 require("./acp/lib/config.timearea.inc.php");
    132 $time_result = date("H");
    133 if ($time_result == "05" || $time_result == "06" || $time_result == "07" || $time_result == "08" || $time_result == "09" || $time_result == "10" || $time_result == "11")
    134 {
    135 $timearea = $timemorning;
    136 }

    Kann mir bitte jemand dabei helfen, diese Fehlermeldungen zu beseitigen? Vielen Dank.

    MfG
    ZeroG

  9. Ich bin auf die Seite gestoßen und wollte die oben genannten Änderung bei meinem Board 2.3.0 vornehmen, leider ohne Erfolg da die Quelltexte nicht vorhanden sind.

    Nach der Erklärung ist mir jedoch aufgefallen das in den unter Punkt 1) fallende Dateien folgender Quelltext ist:
    &new parse

    Im folgen dessen das im Vortext erklärt wurde das dass „&“ nicht mehr als Funktionsanweisung gibt und die Befehle jetzt ohne „&“ geschrieben werden, habe ich in den Dateien die „&“ vor dem „new“ entfernt.

    Das waren ca. 2-4 Änderung pro Datei und lediglich das „&“ musste entfernt werden, seit dem läuft mein Board wieder.

    ACHTUNG: & nur in Verbindung mit new (&new) entfernen!!

    5 Minuten Aufwand und Board ist wieder so wie früher ohne Fehler. Wer den Aufwand gering halten will kann auch nach der Änderung im index.php das Forum aufrufen und gucken bei welchen Funktionen der Fehler noch auftritt und das in den entsprechenden Daten ändern.

    Viel Erfolg

  10. Markus Jüngermann 17. Mai 2016 um 20:41 Antworten

    Hi,

    Ich hab mal so in meine PHP Dateien reingeschaut.

    Allerdings finde ich zb. in der acp/lib/functions.php nicht ein Wort aus dem oben genannten Code:

    [cc lang=’php‘ ]if (!is_null($limit)) return split($pattern, $string, $limit);
    else return split($pattern, $string);[/cc]

    Weiter hab ich jetzt noch nicht geschaut.

    Was soll mir das sagen?

    Ich benutze wbb2.3.6pl2.

    Allerdings hab ich php 5.5.9 uf meinem ubuntu rootserver sodass mich die Änderungen hier eh nichts bringen würden.

    MFG

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.