Freitag, 18. Oktober 2024

Teil 5

So, nun fing ich an diesen ganzen Müllhaufen auf Vordermann zu bringen. Natürlich waren alle Anwendungen so gebaut, dass sich alles im Document-Root befand. Einschließlich des Datenbankdumps/Backups. So war z.B. der ganze Datenbankinhalt im ganzen Intranet für jeden aufrufbar, der die URL kannte. Habe ich natürlich auch gefixt. Wie bereits erwähnt war auuch Lizensierungssoftware niemals geupdatet worden. Direkt mal zwei Versionen übersprungen und darum kein Tool mehr verfügbar um die Daten zu migrieren. Also... manuelles übertragen sämtlicher Produkte und deren sämtlichen Eigenschaften in das neue System.

Dann sollte man das ganze anfangen zu migrieren auf eine neue PHP-Version. Nur es gab keinen Server. Und auf global IT wollte man erst mal nicht zurückgreifen weil die dafür bekannt waren, dass alles was man bei denen bestellt einfach nicht liefern, das im Sande verläuft nachdem man 30 Seiten Spezifikation verfasst hat. Übrigens ein Kommentar von einem Abteilungsleiter dort. Also hat man sich eine Gurke genommen, die 2021 aufgesetzt wurde und dort halt rumstand. Speicherplatz 30 GB. War mal aufgesetzt worden für eine Migration. Aber die Dame, die das früher mal verwaltet hat, hat gesagt das geht nicht und dann hat man es gelassen. Oh welch Wunder, dass es nicht geht wenn man 14 Jahre lang es nicht geschaft hat ein Testsystem aufzusetzen.

Dann wurde mit dem Update auf PHP 8.1 begonnen. Gut kann sich jeder vorstellen wie umfrangreich das war nachdem 14 Jahre in en System reingearbeitet wurde von Leuten, die das eigentlich gar nicht können und quasi alle Fehlermeldungen abgeschaltet waren und sich überall darauf verlassen wurde, dass die PHP-Fehlerkorrektur das schon fixen wird. Nullwerte in Stringfuktionen, Strings in Arrayfunktionen wenn das halt irgenwie nach leerer String, Null, leeres Array, false oder zero vor oder nachdem man es übergeben hat kovertiert werden kann passt das schon. Die Anwendungen waren ansatzweise objektorientiert geschrieben. Also dahingehend dass man für den Spaghetticode von tausende Zeilen lange Funktionen Klassen verwendet hat, ursprünglich. Aber da die sich genauso wie das Arbeiten mit Mercurial nicht selber beibringen konnten wie man PHP-Klassen verwendet haben die an zig Stellen in den Methoden der Klassen per include PHP-Skripte eingebunden wo man PHP halt einfach runterschreiben kann. Und um sicherzugehen dass alle Variablen überall erreichbar ist dann aus unzähligen Variablen dann globale Variablen gemacht, damit man das auch sicher drauf zugreifen kann. Und dann z.B. ein der Verarbeitung aus der DB irgenwas ausgelesen und basierend auf dem Ergebnis dann weitere Funktionen aufgerufen die dann irgenwelche von diesen irgenwo global definierten Variablen verwendet haben. Oh welch Wunder, dass die das dann nicht mehr durchschaut haben, wenn die sich per WinSCP die Dateien zum editieren runtergeladen haben bevor sie diese mit Notepad bearbeitet haben und sie dann nach dem editieren per WinSCP wieder auf den Server geladen haben. Oh mein Gott.

Keine Kommentare:

Kommentar veröffentlichen