===== 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: - vor detaillierten Arbeiten am Quelltext ist es sinnvoll, das **[[WikkaSystemConcept Gesamtkonzept von WikkaWiki zu verstehen]]**; - [[WikkaListeArbeiten ältere chronologische Liste der Arbeiten am System]] === Zunächst eine kurze Sammlung zum Informationsarchiv aus früheren Generationen (vor 2021): === - [[WikkaModRewrite eine besser aussehende URL mit mod_rewrite von Apache]] - [[WikkaLinksToNorms automatische Links auf Normen]] - [[WikkaLocalization Sprachen für das UI]] - [[WikkaCategoryTree Baumdarstellung für Kategorien]] - [[WikkaInhaltsVerzeichnis Automatisiertes Inhaltsverzeichnis]] === Und hier eine geordnete Darstellung aktuell (2021 - 2022) === ((1)) Umstieg auf PHP 8.0 >>**Achtung**! Eine Dokumentation der Anpassung durch Dienstleister 2022 ist **[[WikkaAnpassungFunktionen 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: ((2)) Wakka.class Zeile 336 ##Warning: Undefined variable $result in /usr/local/www/wdb/libs/Wakka.class.php on line 336## ((3)) Problem Offenbar wird die Funktion ##function Query($query, $params=NULL, $dblink='')## auch dann genutzt, wenn sie keinerlei vernünftige Ergebnisse produziert. ((3)) 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;## ((2)) 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## ((2)) 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'))""## ((2)) 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## ((3)) 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.// ((3)) Lösung Es reicht wohl aus, Arrays mit [] statt mit {} zu schreiben... ((3)) Weitere ähnliche Fälle => ##3rdparty/core/safehtml/classes/HTMLSax.php## on line 195 + 343 ((2)) 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... ((3)) 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## ((3)) 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 = '';## ((2)) 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. ((1)) 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 [[WikkaWikiSafeHTML SafeHTML]] aufgerufen und es beginnen viele Probleme. Dies [[WikkaWikiSafeHTML wird hier ausführlich dokumentiert]]. ((1)) 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 [[WikkaWikiDBupdates142 Updates in der DB für WikkaWiki 1.4.2]]. Dort sind auch Befehle zum Export und Import von Daten zu finden! ((1)) 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 [[http://www.erdaxo.de/WikkaWiki#section_15 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 [[http://www.erdaxo.de/WikkaWikiDBupdates142#section_2 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. ((1)) Protokoll Debugging nach Umstellung auf PHP8 Liste der Dateien: ((2)) //root// Im Stammverzeichnis von wikkawiki: => wikka.php ((2)) 3rdparty ((3)) core Insb. safehtml... (1) safehtml / classes Beide: => safehtml.php => HTMLSax.php (insbesondere diese!) ((3)) plugins geshi / geshi.php ((2)) actions ((3)) adminpages Probleme mit Arrays: => adminpages.php ((3)) attachments Action kaputt! => attachments.php ((3)) files Alte Standards im Code: => files.php ((3)) spamlog Konstante nicht vorhanden: => spamlog.php ((2)) handlers ((3)) show Kommentare etc. => show.php ((3)) edit Insbesondere kleine Probleme beim Anlegen neuer Seiten => edit.php ((2)) libs Sehr viele Stellen: => Wakka.class.php ((2)) templates |_ Light => header.php ((1)) 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 [[WikkaAnpassungFunktionen angepassten oder zusätzlichen Funktionen]] von WikkaWiki beziehen. ---- CategoryITKnowledge