Rufen Sie uns an: +49 341 242 502 10

Ich war hier: WikkaWiki

Wikka Wiki

Konfiguration, Einstellungen, Installation
Für erste Schritte bei Updates Originaldokument beachten:
- http://docs.wikkawiki.org/UpgradeNotes
Weitere sinnvolle Quellen:
- http://wikkawiki.org/FilesManagementSolution
- http://wikkawiki.org/WikkaMenulets

Die von uns eingesetzte Software braucht auch manchmal einen kleinen Anschub - deshalb die Dokumentation der Anpassungen / Korrekturen im WikkaWiki:

Zunächst eine kurze Sammlung zum Informationsarchiv aus früheren Generationen (vor 2021):



Und hier eine geordnete Darstellung aktuell (2021 - 2022)


A. Umstieg auf PHP 8.0
Achtung!
Eine Dokumentation der Anpassung durch Dienstleister 2022 ist hier zu finden. Auf dieser Seite hingegen wurden eher die Probleme aufgezeichnet, die mit dem Umstieg auf PHP 8 verbunden sind.
Grundlage der Migration ist WikkaWiki 1.4.2, die für PHP 7.X vorgesehen ist (jedenfalls mit 7.2 getestet wurde). Zahlreiche Probleme in der Datenbanksteuerung und bei einigen Startskripten unter PHP 8 konnten schnell beseitigt werden. Das Problem war insbesondere das geänderte Datenbankmodell in PHP.
Achtung: zahlreiche Fehler könnten womöglich vermieden werden, wenn eine niedrigere Debugging-Stufe in PHP eingestellt worden wäre - bei Berücksichtigung der Fehler und deren Bearbeitung wird der Code wohl qualitativ besser sein.

Als das System dann einigermaßen installiert werden und danach starten konnte, mussten folgende Schritte unternommen werden:

1. Wakka.class Zeile 336
Warning: Undefined variable $result in /usr/local/www/wdb/libs/Wakka.class.php on line 336

a. Problem
Offenbar wird die Funktion function Query($query, $params=NULL, $dblink=) auch dann genutzt, wenn sie keinerlei vernünftige Ergebnisse produziert.

b. Lösung
In Zeile 336 schlicht ändern:
=> aus return $result;
=> Folgendes machen: if (isset($result)) return $result;


2. Wakka.class Zeile 432
Warning: Undefined variable $data in /usr/local/www/wdb/libs/Wakka.class.php on line 432

Es hat das Gleiche geholfen, wie schon bei Zeile 336:
=> aus return $data;
=> mach if (isset($data)) return $data;

3. Fehler, die von selbst verschwunden waren
Die nachstehenden Fehler sind nach Korrektur der Punkte oben von alleine verschwunden:
Warning: Cannot modify header information - headers already sent by (output started at /usr/local/www/wdb/libs/Wakka.class.php:336) in /usr/local/www/wdb/libs/Wakka.class.php on line 5285
und:
Warning: Cannot modify header information - headers already sent by (output started at /usr/local/www/wdb/libs/Wakka.class.php:336) in /usr/local/www/wdb/libs/Wakka.class.php on line 5287

4. Weitere Fehler in den Kommentaren
In den Kommentaren werden in der Regel folgende Fehler angezeigt:
Warning: Trying to access array offset on value of type null in /usr/local/www/wdb/handlers/show/show.php on line 163
Eigentlich zog sich hier die Befehlskette über zwei Zeilen und sah so aus:
if ((isset($_SESSION['show_comments'][$tag]) && $_SESSION['show_comments'][$tag] != COMMENT_NO_DISPLAY) || ($user['show_comments'] == 'Y'))
Der Wert $user musste noch mal vor Abfrage auf Existenz geprüft werden:
if ((isset($_SESSION['show_comments'][$tag]) && $_SESSION['show_comments'][$tag] != COMMENT_NO_DISPLAY) || ($user && $user['show_comments'] == 'Y'))

5. Sporadische Fehler auf manchen Seiten
(Beispiel: FormattingRules) => schwerwiegend, da sich gar keine Seite zeigt und nur die Fehlermeldung:
Fatal error: Array and string offset access syntax with curly braces is no longer supported in /usr/local/www/wdb/3rdparty/core/safehtml/classes/safehtml.php on line 95

a. Problem: obsolet gewordene Schreibweise mit { oder }
Siehe hier:
https://www.php.net/manual/de/migration80.incompatible.php

an der Stelle unter folgender Überschrift:
Support for deprecated curly braces for offset access has been removed.

b. Lösung
Es reicht wohl aus, Arrays mit [] statt mit {} zu schreiben...

c. Weitere ähnliche Fälle
=> 3rdparty/core/safehtml/classes/HTMLSax.php on line 195 + 343


6. Fehler nach Anmeldung
Nach der Anmeldung als User (hier konkret der Admin) kamen weitere Fehler vor:
Warning: Undefined variable $sessionid in /usr/local/www/wdb/libs/Database.lib.php on line 175 gleich 2x...
Später verschwanden Sie aber wieder ohne Änderungen. Vielleicht mit Korrektur zu den Zeilen 336 / 432. Danach aber wieder aufgetaucht...

a. Problem
Nach Anmeldung als registrierter Benutzer taucht überall die Meldung auf:
Warning: Undefined variable $sessionid in /usr/local/www/wdb/libs/Database.lib.php on line 175 und noch mal
Warning: Undefined variable $username in /usr/local/www/wdb/libs/Database.lib.php on line 175

b. Lösung
In Datei Database.lib.php die Variablen $sessionid und $username entsprechend definiert (nun 2 neue Zeilen 168/169):
if(!isset($sessionid)) $sessionid = ;
if(!isset($username)) $username = ;


7. Fehler in action PageIndex (Wakka.class Zeile 4131)
Fehlermeldung war:
Warning: Undefined variable $name in /usr/local/www/wdb/libs/Wakka.class.php on line 4131
Lösung:
in Zeile 4108 Variable definiert: if(!isset($name)){$name = ;}
Zeile 4131 verschiebt sich in 4134.


B. Fehler bei Aufruf von HTML-Quelltext
Bei Aufruf von HTML in roher Form (mit doppelten Anführungsstrichen " möglich) wird offenbar eine veraltete Version von SafeHTML aufgerufen und es beginnen viele Probleme. Dies wird hier ausführlich dokumentiert.


C. Datenbanken und Datenbankstruktur
Die letzten Versionen von WikkaWiki führen einige wichtige Änderungen in der Struktur der Datenbank (mysql) ein. Insbesondere das, was in der Tabelle users passiert, hatte viele Folgen beim Debugging. Sie müssen also händisch nachgetragen werden. Scheinbar werden diese Änderungen bei Anlegen einer sauberen, frischen Neuinstallation nicht berücksichtigt!

=> Details dazu im Artikel über Updates in der DB für WikkaWiki 1.4.2.

Dort sind auch Befehle zum Export und Import von Daten zu finden!


D. Protokoll nach Korrektur safehtml
Nachdem mit safehtml Durchbruch erzielt wurde, wird wie folgt gearbeitet:
  • Entwicklungssystem = Ubuntu 22.04 LTS als Server / VM unter 10.1.0.128
  • dort ist im separaten Verzeichnis auch rector installiert und kann zur Konvertierung genutzt werden

=> libs/Wakka.class.php - überarbeitet mit rector

=> Fehler Too few arguments to function Wakka::__construct(), 0 passed
Zeilen: libs/Wakka.class.php = 235; wikka.php = 704
Lösung: => Initialisierung Wakka-Class mit $wakka = instantiate('Wakka',$wakkaConfig);

=> Warnung Warning: Undefined variable $name in /var/www/wikka/libs/Wakka.class.php on line 4106
Ist vorher nicht aufgetreten, nach Bearbeitung mit rector da...
Wurde schon mal bearbeitet - Lösung: siehe oben.

=> Kommentare verursachen Fehler; das aktive Template wird nicht genutzt, Seite erscheint unformatiert und es kommt Meldung:
Fatal error: Uncaught TypeError: Unsupported operand types: array & bool in /var/www/wikka/handlers/show/show.php:340 usw.
Es hat gereicht, die Bedingung in Zeile 338 zu korrigieren:
=> statt & musste && gesetzt werden;
Später war ähnliches Problem aufgetaucht (diesmal beim ausgeloggten Benutzer) in Zeile 163:
=> statt ($user['show_comments']
'Y')) musste nun ((isset($user['show_comments'])) && $user['show_comments']
'Y')) her, weil array leer war...

=> action "adminpages" wirft Warnungen raus:
Warning: Undefined array key "id" in /var/www/wikka/actions/adminpages/adminpages.php on line 677
Warning: Undefined array key "note" in /var/www/wikka/actions/adminpages/adminpages.php on line 681

(Bearbeitung der Datei actions/adminpages/adminpages.php mit rector brachte keine Änderung)
Aber => das Problem war offenbar die unvollständige Variable $sort_fields (Zeile 327), in der die Felder aus der DB vorgegeben waren. Nachdem id und note darin ergänzt wurden, ist alles OK!

=> function LoadAll() in Wakka.class.php musste korrigiert werden:
//return $data;
musste (Zeile 431) ersetzt werden mit
if (isset($data)) return $data;

=> Functions für "badwords" in Wakka.class.php mussten korrigiert werden
  • Kostante DEFAULT_BADWORDS_PATH war nicht definiert
  • da die Konstante sonst nirgendwo nötig war, wurde sie überflüssig gemacht, so dass die Funktionen (Zeile 4850 und 4894) einfach aus den config-Values eingelesen wird ($badwordspath = $this->GetConfigValue('badwords_path');)

=> Funktionen für Source-Code-Highlighting (geshi) waren kaputt
  • geshi wurde mit rector behandelt
  • und danach ging alles wieder einwandfrei => die von rector ebenfalls veränderten, einzelnen Dateien (für Quellcode-Arten) im Verzeichnis "geshi" mussten nicht mal angefasst werden...

=> Action "spamlog.php" produzierte Fehler:
Fatal error: Uncaught Error: Undefined constant "DEFAULT_SPAMLOG_PATH"
Lösung: ähnlich wie bei "badwords" oben;
darüber hinaus musste noch spamlog-Datei angelegt werden...

=> Action "files.php" hatte veraltete Code-Standards
  • Behandlung mit rector hat ausgereicht, Fehler waren verschwunden!

=> Action "attachments.php" funktioniert insgesamt nicht.
  • Fehler wegen fehlender Definition einer Variable sind nur kleines Problem!
  • Der erzeugte Link führt zu nichts!
  • deshalb sollte das Ding beseitigt werden.

=> diverse Probleme beim Anlegen neuer Seiten:
Warning: Trying to access array offset on value of type bool in /var/www/wikka/libs/Wakka.class.php on line 1651
Warning: Trying to access array offset on value of type bool in /var/www/wikka/handlers/edit/edit.php on line 81 / 174 / 176
Warning: Trying to access array offset on value of type bool in /var/www/wikka/templates/light/header.php on line 8 / 10 / 19 / 51
=> in der Regel durch Prüfung der Existenz der Variable abgefangen;

=> Rund um Kategorien waren Warnungen zum Titel (nach Umstieg auf die Datenbank der WDB)
Warning: Trying to access array offset on value of type bool in /var/www/wikka/libs/Wakka.class.php on line 2208
Beseitigt mit Abfangen der fehlenden Variablen-Deklaration / Definition vorher.

=> Registrierung war plötzlich nicht mehr möglich
Unter FreeBSD gab es keine Meldungen - unter Ubuntu kamen Warnungen:
Warning: foreach() argument must be of type array|object, null given in /var/www/wikka/libs/userregistration.class.php on line 111
Möglicherweise funktioniert also die genannte Datei nicht korrekt...
Vorgehensweise:
=> nach Behandlung mit rector verschwindet die Warnung
=> die Registrierung war dann (unter Ubuntu 22.04 mit apache php_mod) sofort möglich
=> unter FreeBSD => kein Problem, sofern die DB entsprechend aktualisiert!

=> Geshi funktionierte nicht unter FreeBSD
Unter Ubuntu war hingegen alles OK. rector hat offenbar aus Arrays irgendwie Klassen-Konstruktionen gemacht, die unter Ubuntu und PHP 8.1 OK waren, unter FreeBSD und PHP 8.0 nicht... Eine Umgestaltung zurück in Arrays löste das Problem.
Vgl. in 3rdparty/plugins/geshi/geshi.php die Zeilen (neue Version nach rector): 3210, 3230, 3247, 3422.


E. Protokoll Debugging nach Umstellung auf PHP8
Liste der Dateien:

1. root
Im Stammverzeichnis von wikkawiki:

=> wikka.php

2. 3rdparty

a. core
Insb. safehtml...
(1) safehtml / classes
Beide:
=> safehtml.php
=> HTMLSax.php (insbesondere diese!)

b. plugins
geshi / geshi.php

3. actions

a. adminpages
Probleme mit Arrays:
=> adminpages.php

b. attachments
Action kaputt!
=> attachments.php

c. files
Alte Standards im Code:
=> files.php

d. spamlog
Konstante nicht vorhanden:
=> spamlog.php

4. handlers

a. show
Kommentare etc.
=> show.php
b. edit
Insbesondere kleine Probleme beim Anlegen neuer
Seiten
=> edit.php

5. libs
Sehr viele Stellen:
=> Wakka.class.php

6. templates
|_ Light
=> header.php



F. Anpassung der Funktionen / Customizing
Die oben zusammengefassten Probleme und ihre Korrekturen betrafen zunächst einmal Fehler im Sinne von nicht / falsch funktionierenden Skripten. Resultat war eine Fehlermeldung oder eine Seite / Funktion haben nicht funktioniert. Unter dem Kapitel "Anpassung der Funktionen" werden Themen behandelt / protokolliert, die sich auf die angepassten oder zusätzlichen Funktionen von WikkaWiki beziehen.



CategoryITKnowledge
Auf dieser Seite sind keine Kommentare vorhanden