ScriptCase-Anwendung läuft nach PHP-Update nicht mehr: So bringen Sie sie auf PHP 8
Nach einer PHP-Umstellung zeigt Ihre ScriptCase-Anwendung nur noch Fehler? Wo die typischen Probleme stecken und wie Sie die Anwendung sauber auf aktuelles PHP bringen.
Kurz gesagt: Eine ScriptCase-Anwendung, die nach einer PHP-Umstellung beim Hoster nicht mehr läuft, lässt sich in den meisten Fällen retten. Der saubere Weg: die Anwendung mit einer aktuellen ScriptCase-Version neu generieren, die passende Produktionsumgebung mit ausliefern und den eigenen Code in Events und Bibliotheken an das neue PHP anpassen. Den generierten Code direkt von Hand zu reparieren, ist nur eine Notlösung, denn beim nächsten Generieren ist die Änderung wieder weg.
ScriptCase ist ein Werkzeug, mit dem sich Formulare, Listen, Berichte und ganze Geschäftsanwendungen in PHP erzeugen lassen. Viele Firmen haben so vor Jahren ihre Auftragsverwaltung, ihr Lager oder ihre Kundendatenbank gebaut. Die Anwendung läuft, alle sind zufrieden, bis der Hoster oder die IT eine neue PHP-Version einspielt. Dann kommen weiße Seiten, Fehlermeldungen oder ein Login, der nicht mehr funktioniert.
Warum ScriptCase-Anwendungen bei neuem PHP brechen
ScriptCase erzeugt PHP-Code. Dieser Code passt zu den PHP-Versionen, die zur Zeit der jeweiligen ScriptCase-Version aktuell waren. Wurde die Anwendung mit einer alten ScriptCase-Version generiert, enthält sie Code für altes PHP. Dazu kommen drei weitere Stellen, an denen es hakt:
- Eigener Code in Events. Fast jede ScriptCase-Anwendung hat selbst geschriebenen PHP-Code, etwa in onLoad, onValidate oder onAfterInsert. Dort stehen oft Funktionen, die es in neuem PHP nicht mehr gibt, zum Beispiel
mysql_query(),each()odercreate_function(). - Interne Bibliotheken und Blank-Anwendungen. Hier liegt häufig der größte Teil der Geschäftslogik, und hier wurde am wenigsten getestet.
- Die Produktionsumgebung. Generierte Anwendungen brauchen auf dem Server die ScriptCase-Bibliotheken (den Ordner
_lib). Passt diese Umgebung nicht zur ScriptCase-Version, mit der generiert wurde, oder nicht zur PHP-Version des Servers, laufen auch fehlerfreie Anwendungen nicht.
Schritt 1: Bestandsaufnahme
- Mit welcher ScriptCase-Version wurde das Projekt zuletzt generiert?
- Gibt es das Projekt noch in einer ScriptCase-Installation, oder liegen nur die generierten Dateien auf dem Server?
- Ist eine gültige ScriptCase-Lizenz vorhanden? Ohne sie lässt sich nicht neu generieren.
- Welche PHP-Version läuft auf dem Server, welche soll es werden?
- Welche Datenbank wird genutzt, und läuft sie auf einer unterstützten Version?
Die zweite Frage ist die wichtigste. Liegt das Projekt nur noch als generierter Code vor, ohne die ScriptCase-Projektdatei, ändert sich die ganze Strategie. Dann geht es eher um eine Migration als um ein Update.
Schritt 2: Fehler sichtbar machen
Ohne Fehlermeldung ist jede Reparatur Raten. Schalten Sie auf einer Testkopie die Anzeige von PHP-Fehlern ein oder lesen Sie das Fehlerprotokoll des Servers. Typische Meldungen:
Call to undefined function mysql_connect(): alte Datenbankfunktionen, seit PHP 7.0 entfernt.Call to undefined function each()odercreate_function(): seit PHP 8.0 entfernt.count(): Argument #1 ($value) must be of type Countable|array, null given: strengere Typprüfung seit PHP 8.0.Creation of dynamic property … is deprecated: Hinweis seit PHP 8.2, noch kein Absturz.
Steht der Dateipfad in einem selbst geschriebenen Event oder einer Bibliothek, ist es Ihr Code. Steht er im generierten Code oder in _lib, liegt es an der ScriptCase-Version.
Schritt 3: Neu generieren und eigenen Code anpassen
Der saubere Weg sieht so aus:
- Projekt sichern, auch die Datenbank.
- Projekt in eine aktuelle ScriptCase-Version importieren.
- Eigenen Code in Events, Methoden und Bibliotheken an das neue PHP anpassen.
- Alle Anwendungen neu generieren.
- Auf einer Testumgebung mit der neuen PHP-Version und der passenden Produktionsumgebung ausführlich testen, mit echten Arbeitsabläufen der Nutzer.
- Erst dann auf den Produktivserver übertragen.
Größere Sprünge zwischen ScriptCase-Versionen bringen manchmal Änderungen im Verhalten von Formularen, Menüs oder Sicherheitsmodulen mit sich. Planen Sie dafür Testzeit ein.
Wann sich ein Update nicht mehr lohnt
- Die Projektdatei fehlt, es gibt nur noch generierten Code.
- Die Lizenz ist abgelaufen und soll nicht verlängert werden.
- Die Anwendung wurde so oft von Hand im generierten Code geändert, dass ein Neugenerieren alles überschreiben würde.
- Es fehlen grundlegende Funktionen, die mit ScriptCase nur mühsam umzusetzen sind.
Dann ist eine schrittweise Ablösung durch eigenen PHP-Code meist der bessere Weg. Wie das abläuft, beschreibe ich in ScriptCase-Anwendung ablösen.
Professionelle Hilfe
Ich arbeite selbst mit ScriptCase und bringe bestehende Anwendungen auf aktuelles PHP: Bestandsaufnahme, Anpassung des eigenen Codes, Neugenerierung, Test und Übergabe. Mehr unter ScriptCase-Entwickler. Ist die Lage unklar, beginne ich mit einer Analyse für 150 € netto, danach wissen Sie, ob Update oder Ablösung sinnvoller ist.