Inhaltsverzeichnis des Artikels
A. Umstieg auf PHP 8.0
1. Wakka.class Zeile 336
a. Problem
b. Lösung
2. Wakka.class Zeile 432
3. Fehler, die von selbst v...
4. Weitere Fehler in den Ko...
5. Sporadische Fehler auf m...
a. Problem: obsolet geworde...
b. Lösung
c. Weitere ähnliche Fälle
6. Fehler nach Anmeldung
a. Problem
b. Lösung
7. Fehler in action PageInd...
B. Fehler bei Aufruf von HT...
C. Datenbanken und Datenban...
D. Protokoll nach Korrektur...
E. Protokoll Debugging nach...
1. root
2. 3rdparty
a. core
b. plugins
3. actions
a. adminpages
b. attachments
c. files
d. spamlog
4. handlers
a. show
b. edit
5. libs
6. templates
F. Anpassung der Funktionen...
1. Wakka.class Zeile 336
a. Problem
b. Lösung
2. Wakka.class Zeile 432
3. Fehler, die von selbst v...
4. Weitere Fehler in den Ko...
5. Sporadische Fehler auf m...
a. Problem: obsolet geworde...
b. Lösung
c. Weitere ähnliche Fälle
6. Fehler nach Anmeldung
a. Problem
b. Lösung
7. Fehler in action PageInd...
B. Fehler bei Aufruf von HT...
C. Datenbanken und Datenban...
D. Protokoll nach Korrektur...
E. Protokoll Debugging nach...
1. root
2. 3rdparty
a. core
b. plugins
3. actions
a. adminpages
b. attachments
c. files
d. spamlog
4. handlers
a. show
b. edit
5. libs
6. templates
F. Anpassung der Funktionen...
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
- 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:
- vor detaillierten Arbeiten am Quelltext ist es sinnvoll, das Gesamtkonzept von WikkaWiki zu verstehen;
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.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.
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
Warning: Undefined variable $result in /usr/local/www/wdb/libs/Wakka.class.php on line 336
=> 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
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:
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:
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:
(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
an der Stelle unter folgender Überschrift:
Support for deprecated curly braces for offset access has been removed.
6. Fehler nach Anmeldung
Nach der Anmeldung als User (hier konkret der Admin) kamen weitere Fehler vor:
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...
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
if(!isset($sessionid)) $sessionid = ;
if(!isset($username)) $username = ;
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.
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...
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!
//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
=> 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:
=> wikka.php
(1) safehtml / classes
Beide:
=> safehtml.php
=> HTMLSax.php (insbesondere diese!)
=> adminpages.php
=> attachments.php
=> files.php
=> spamlog.php
=> show.php
Seiten
=> edit.php
=> Wakka.class.php
=> 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
Diese Seite wurde noch nicht kommentiert.