Immer noch Fehler bez. CoreAutoloader bei PHP.8.1. mit WB 2.13.3.r166

sternchen8875

Quote from: ra-wi on January 07, 2023, 03:15:45 PM
das Problem ist nun gelöst und eigentlich war es ja keins

genau
schön, das alles geklärt werden konnte   (Y)

ra-wi

Hallo,
es hat mir mal wieder keine Ruhe gelassen :-)

Sorry, aber das ist mir jetzt wirklich peinlich, aber ich hatte tatsächlich eine alte WebsiteBaker Version unter PHP8.1 installiert.
Nachdem ich nun die Sicherungen und Datenbank wieder hochgeladen habe und danach die aktuelle V.2.13.3.r166 installiert habe, läuft alles unter PHP 8.1 wunderbar und auch ohne Fehlermeldung.

Ja sternchen8875, natürlich verwende ich seit einiger Zeit unzip und installiere darüber auch die zip Datei. Darum weiß ich auch im Nachhinein nicht mehr, wie das passieren konnte.

Nun ja, das Problem ist nun gelöst und eigentlich war es ja keins, sondern nur mein Versehen.
So, sternchen8875, vielen Dank für die Hilfe. Und für die Umstände und Bemühungen, die nicht hätten sein müssen, entschuldige ich mich.

Schönes Wochenende und lG
Rainer

sternchen8875

Quote from: ra-wi on January 06, 2023, 10:19:15 PM
Dann mache ich mal am Montag den Austausch des Ordners Framework. Komplett den Ordner oder nur die CoreAutoload.php?

Ich weiß nicht, wie du dieses Upgrade von 2.13.0 auf 2.13.3 durchgeführt hast. Mit der empfohlenden Methode, die die unzip.php zum Entpacken des ZIP's benutzt oder manuell per FTP bzw SFTP und überschreiben. Da die Methode mit der unzip.php eigentlich der sicherste Weg ist, tippe ich auf die FTP-Methode

Ich persönlich würde davon ausgehen, wenn das Überschreiben bei einer Datei nicht funktioniert hat, dann vielleicht an anderer Stelle auch nicht, von daher würde ich eher das komplette Paket austauschen, d.h. die Ordner account, admin, framework, include, language, search und vendor einmal löschen im Anschluß dieser Anleitung folgen

QuoteKurzversion:
- Mache ein Backup aller Dateien und der Datenbank (!wichtig)

+Empfohlener Weg: (schnell & sicher)
- lade das WB ZIP Paket & die unzip.php.zip herunter
- benenne unzip.php.zip um in unzip.php
- lade das WB ZIP Paket & die unzip.php hoch in den WB Root Verzeichnis (da wo die config.php liegt)
- rufe die unzip.php in deinem Browser auf (https://deine-domain.de/unzip.php) (ersetze deine-domain.de mit deiner eigenen Domain)
- melde dich im Backend als Super-Admin (Admin mit ID 1) an und starte das upgrade-script via Upgrade-Link oder in der WB-info (i-Button)

Die unzip.php und das WB ZIP löschen sich selbst nach erfolgreicher Ausführung der unzip.php.

Oder diesem Video folgen -> https://www.youtube.com/watch?v=2Vi5v7vhKx8
das beschreibt zwar eine andere Ausgangsversion, ist aber genauso gültig

An einzelne Dateien würde ich nicht ran gehen, es sind über 4700 Dateien im Paket, unmöglich, das von Hand zu kontrollieren.

ra-wi

Jetzt musste ich das doch noch mal kontrollieren :-)

Stimmt, du hattest recht.... hier der Code aus einer funktionierenden Version 2.13.3.r166 unter PHP 8.1

public static function seekClassFile($sClassName)
    {
        $sResult = '';
        $aMatches = \preg_split(
            '=/=',
            \str_replace('\\', '/',$sClassName.'.php'),
            -1,
            \PREG_SPLIT_NO_EMPTY

        );


Dann mache ich mal am Montag den Austausch des Ordners Framework. Komplett den Ordner oder nur die CoreAutoload.php?

LG
Rainer

ra-wi

Das hört sich ja schon mal gut und nach einer Lösung an.
Ich kann mich jedoch erst nach dem Wochenende wieder darum kümmern.

Ich melde mich dann ggf. mit einer Erfolgsmeldung :-)

LG
Rainer

sternchen8875

Nein, das ist die alte Version aus WB 2.13.0 Rev 67. Erkennt man am Wort "null" oberhalb deiner Zeile mit dem \PREG_SPLIT_NO_EMPTY

PHP 8.1 erwartet hier einen integeren Wert, erlaubt wären also Zahlen, z.b. eben -1 oder 0 für "ohne Limits"

Wenn du dir sicher bist, das diese Version schon ein Update auf die neueste WB-Version ist, würde ich den kompletten Inhalt des Ordners /framework löschen und mit den Dateien aus dem neuesten Paket ersetzen. Damit verschwindet dann auch die erwähnte Meldung, die in der Übersetzung genau auf dieses Problem hinweist.

ra-wi

Hallo,
ja klar:
public static function seekClassFile($sClassName)
    {
        $sResult = '';
        $aMatches = \preg_split(
            '=/=',
            \str_replace('\\', '/',$sClassName.'.php'),
            null,
            \PREG_SPLIT_NO_EMPTY
        );


Scheint alles identisch zu sein

sternchen8875

Kannst du mal bitte in diese Datei reinschauen (framework/CoreAutoloader.php) und diese Funktion in den Zeile 118ff kopieren und hier posten.
Nicht, das da noch eine ältere Datei-Version vorhanden ist.

Es geht um diesen Abschnitt hier


ra-wi

Hallo zusammen,
aufgrund der oben genannten Fehlermeldung bin ich hier im Forum auf einen alten Eintrag gestoßen:
https://forum.WebsiteBaker.org/index.php/topic,32019.msg224108.html#msg224108

Tatsächlich habe ich auch bei einem Upgrade auf V.2.13.3.r166 in Verbindung mit PHP 8.1 die folgende Fehlermeldung erhalten.
Deprecated: preg_split(): Passing null to parameter #3 ($limit) of type int is deprecated in /homepages/6/d710870917/htdocs/framework/CoreAutoloader.php on line 118

Erst nach Zurücksetzen auf PHP8.0 lief alles wieder einwandfrei.
Dieses Problem tritt jedoch bislang nur auf einem IONOS-Webspace auf. Bei Hosteurope gibt es hingegen auch mit PHP8.1 keine Probleme.

Ich wollte nur mal darauf hinweisen, dass es das Problem wohl immer noch gibt, eventuell abhängig vom Provider ?

LG
Rainer