usługi prawne, ochrona danych, bezpieczne systemy informatyczne

ich war hier: WikkaWiki

Version [3886]

Dies ist eine alte Version von WikkaWiki erstellt von WojciechLisiewicz am 2022-07-08 22:09:01.

 

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
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. 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.


D. 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!)
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. andere?

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




CategoryITKnowledge
Auf dieser Seite sind keine Kommentare vorhanden
Valid XHTML  |  Valid CSS  |  Powered by WikkaWiki