Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

Große Probleme mit moz2 Rev 55 und PHP 8.2

Begonnen von Thorstn, 15. Juni 2023, 21:12:55

« vorheriges - nächstes »

Thorstn

Moin moin!

Ich habe sowohl offline (XAMPP) als auch online (testweise auf Test-Server) die aktuelle moziloCMS 2.0, Rev. 55, ohne Plugins usw. installiert und bekomme Fehlermeldungen.

Bei der Online-Version wird zwar nur im Admin eine Fehlermeldung angezeigt (siehe weiter unten), aber bei jedem Klick (z.B. Aktivieren eines Plugins) erscheint diese Fehlermeldung erneut. Es geht sogar so weit, dass ich gar nicht in die Benutzer-Syntax reinkomme, es erscheint nur die Fehlermeldung als Pop-Up, dann bin ich wieder im "Einstellungen" Reiter.

Die Fehlermeldung lautet:

Deprecated: Creation of dynamic property idna_convert::$slast is deprecated in /var/www/vhosts/xxxxx/sub/php82/mozilo55/cms/idna_convert.class.php on line 96
Bei der Offline-Version (XAMPP) habe ich zudem / zusätzlich im Frontend (ebenfalls "nacktes", neues CMS, ohne Plugins) weitere Fehlermeldungen:

Deprecated: Creation of dynamic property Syntax::$syntax_user is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 56

Deprecated: Creation of dynamic property Syntax::$activ_plugins is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 69

Deprecated: Creation of dynamic property Syntax::$deactiv_plugins is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 70

Deprecated: Creation of dynamic property Syntax::$placeholder is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 75

Deprecated: Creation of dynamic property Syntax::$PLACE_SEARCH is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 94

Deprecated: Creation of dynamic property Syntax::$SYNTAX_SEARCH is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 95

Deprecated: Creation of dynamic property Syntax::$SYNTAX_SEARCH_REST is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 96

Deprecated: Creation of dynamic property Syntax::$SYNTAX_SEARCH_OHNE is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 97

Deprecated: Creation of dynamic property Syntax::$PLUGIN_SEARCH is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 98

Deprecated: Creation of dynamic property Syntax::$PLUGIN_SEARCH_REST is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 99

Deprecated: Creation of dynamic property Syntax::$PLUGIN_SEARCH_OHNE is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 100

Deprecated: Creation of dynamic property Syntax::$script_search is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 101

Deprecated: Creation of dynamic property Syntax::$script_replace is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 102

Deprecated: Creation of dynamic property Syntax::$jquery_search is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 103

Deprecated: Creation of dynamic property Syntax::$jquery_replace is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 104

Deprecated: Creation of dynamic property Syntax::$pluginself is deprecated in D:\xampp\htdocs\mozilo55\cms\Syntax.php on line 105

So ist moziloCMS 2.0 Rev 55 (ältere Revs hatte ich nicht getestet) unter PHP 8.2.7 nicht einsatzfähig.

Weiß jemand eine Lösung?

Im Voraus vielen Dank :-)
www.mad-it.de - Wir lösen keine Probleme. Wir machen sie.
Webdesign aus Bochum

harry60

#1
Hallo Torstn,

Ich hatte letztens schon geschrieben, das bei mir moziloCMS 2.0 Rev.55 unter XAMPP PHP8.2.0 läuft.
Jetzt ist mir eingefallen, das ich die Zeile 96:

$this->slast = $this->_sbase + $this->_lcount * $this->_vcount * $this->_tcount;
in:
  @$this->slast = $this->_sbase + $this->_lcount * $this->_vcount * $this->_tcount;
geändert habe. Dann funktioniert es. Ist vielleicht nicht die feine art, aber es geht.

laborix

Zitat von: Thorstn am 15. Juni 2023, 21:12:55... Weiß jemand eine Lösung? ...
Um mal kurz eine Klärung mit moziloCMS 2.0 rev.55 zu machen.
Man kann eine Standard! moziloCMS 2.0 rev.55 unter PHP 8.2 mit folgenden Änderungen zu laufen zu bekommen. Die Betonung liegt auf Standard Version.

PHP 8.2 Patch für /cms/idna_convert.class.php

Bitte folgende Zeile in der Zeile 86 einfügen:
  private $slast = NULL;Wichtig: Diese Zeile muss nach der "...  protected $_idn_version = 2008; ..." eingefügt werden.

PHP 8.2 Patch für /cms/syntax.php

Bitte folgende Zeilen in der Zeile 23 einfügen:
  private $syntax = NULL;
  private $activ_plugins = NULL;
  private $deactiv_plugins = NULL;
  private $placeholder = NULL;
  private $syntax_user = NULL;
  private $PLACE_SEARCH = NULL;
  private $SYNTAX_SEARCH = NULL;
  private $SYNTAX_SEARCH_REST = NULL;
  private $SYNTAX_SEARCH_OHNE = NULL;
  private $PLUGIN_SEARCH = NULL;
  private $PLUGIN_SEARCH_REST = NULL;
  private $PLUGIN_SEARCH_OHNE = NULL;
  private $script_search = NULL;
  private $script_replace = NULL;
  private $jquery_search = NULL;
  private $jquery_replace = NULL;
  private $pluginself = NULL;
  private $Breadcrumb = NULL;
  private $Galerie = NULL;
  private $CONTACT = NULL;
  private $LASTCHANGE = NULL;
Wichtig: Diese Zeilen müssen nach der "...  var $is_preparePageContent = false; ..." eingefügt werden.

Thematik moziloCMS 2.0 Standard:
Mit jedem Plugin das nicht in der moziloCMS 2.0 rev.55 Download Version enthalten ist, muss pro extra genutzten Plugin abhängig von der Fehlermeldung eine neue Zeile mit

  private $plugin_name = NULL;
an die oben gelisteten Zeilen angehängt werden. Siehe als Vergleich das Galerie-, Contact- oder LastChange-Plugin in der Liste oben.

Hinweis:
Es ist Quellcode-technisch aktuell nicht möglich diesen Umstand für alle Plugins/neue Plugins/Erweiterungen umzusetzen ohne das moziloCMS 2.0 komplett umzuschreiben, beziehungsweise zu modernisieren.
Wenn sich jemand dafür berufen fühlt, bitte gerne, der Quellcode steht im offiziellen moziloCMS 2.0 Github zur Verfügung.

harry60

#3
ZitatPHP 8.2 Patch für /cms/idna_convert.class.php

Bitte folgende Zeile in der Zeile 86 einfügen:
private $slast = NULL;
ZitatWichtig: Diese Zeile muss nach der "...  protected $_idn_version = 2008; ..." eingefügt werden.

Ich habe PHP-Version 8.2.4 und die oben aufgeführte Zeile eingefügt.
Alle meine eigenen plugins funktionieren, ohne die /cms/syntax.php zu ändern.
Bei obigen Post habe ich das @ entfernt.
Ich habe die Standard-Version.

laborix

Zitat von: harry60 am 17. Juni 2023, 16:57:04... ohne die /cms/syntax.php zu ändern. ...
Das ist abhängig von dem beim Provider eingestellten PHP.ini "error_level"-Wert und ob ein Provider die PHP.ini "display_errors" auf "Off" per default hat.

Die PHP Meldung "Deprecated: Creation of dynamic property ..." besagt laut PHP 8.2 Dokumentation, das diese Function fehlerhaft definiert ist und von daher auf "veraltet" gesetzt wurde. Der PHP Code funktioniert trotzdem, aber mit den nächsten PHP Version wird das nicht mehr funktionieren.

harry60

#5
Ob das richtig ist?

#[AllowDynamicProperties]
class idna_convert {
...
}
und
#[AllowDynamicProperties]
class Syntax {
...
}

Ich habe keine Fehler mehr.
Ich muß noch ergänzen:
Auswirkungen auf die Abwärtskompatibilität

Der Verfallshinweis wird ab PHP 8.2 ausgegeben. In PHP 9.0 führen dynamische Eigenschaften zu einem schwerwiegenden Fehler .

Im Interesse der Konsistenz über mehrere PHP-Versionen hinweg ist es möglich, in älteren Versionen programmgesteuert eine veraltete Version auszugeben.
Quelle:https://php.watch › Versions › 8.2

laborix

Zitat von: harry60 am 17. Juni 2023, 19:32:38Ob das richtig ist? ...
Welche der beiden geposteten Lösungsansätze mit den nächsten PHP Versionen funktionieren wird, kann ich nicht sagen. Das werden die nächsten PHP Versionen zeigen.

harry60

Hallo,

es hat mir keine Ruhe gelassen - hier mein Ergebnis. Ich denke mal es braucht keine neue Programmierung.
Einfach nur die Zeilen ergänzen.

class Syntax extends stdClass {
...
}

und

class idna_convert extends stdClass {
...
}

sonst wird keine extra Zeile benötigt.
Ihr könnt ja mal testen ob es funktioniert, bei mir in PHP8.0 und PHP 8.2.4. hat es jedenfalls.
Auch mit allen plugins.

FoxoF

Ich habe das gleiche Problem wie am Anfang beschrieben. Daher habe ich zunächst, wie von harry60 beschrieben in der Datei 'idna_convert.php' in der Zeile 96 das '@' vor '$this->slast = $this->_sbase + ...' eingefügt. Das führte dazu, dass ich nicht mehr an den Template Ordner in der CMS komme. Er ist sichtbar aber geghosted.
Bei dem späteren Vorschlag von harry60 komme ich nicht so richtig weiter da ich mich mit PHP nicht auskenne
Zitat von: harry60 am 19. Juni 2023, 16:25:24Hallo,

es hat mir keine Ruhe gelassen - hier mein Ergebnis. Ich denke mal es braucht keine neue Programmierung.
Einfach nur die Zeilen ergänzen.

class Syntax extends stdClass {
...
}

und

class idna_convert extends stdClass {
...
}

sonst wird keine extra Zeile benötigt.
Ihr könnt ja mal testen ob es funktioniert, bei mir in PHP8.0 und PHP 8.2.4. hat es jedenfalls.
Auch mit allen plugins.

Ich nehme mal an, dass die Zeilen von harry60 oben in die Datei 'idna_convert.class.php' eingefügt werden müssen. An welcher Stelle sollte das geschehen?
Dann sind zwischen den geschweiften Klammern drei Punkte eingefügt. Müsste das so übernommen werden oder stehen die für etwas was dort eingefügt werden muss?

FoxoF

Die Fehlermeldung lautet ja 'Creation of dynamic property idna_convert::$slast is deprecated'. Im PHP-Handbuch habe ich gelesen, dass man das Problem, dass dynamische Eigenschaften nicht mehr erlaubt sind dadurch umgehen kann dass man sie explizit erlaubt. Dort heißt es "Das Erstellen dynamischer Eigenschaften ist veraltet, es sei denn, die Klasse erlaubt dies mit dem Attribut #[\AllowDynamicProperties]." Ich würde das gerne ausprobieren, weiß aber nicht wie man das macht. Kann mir jemand Hilfestellung geben?

marusti

Das kannst du in der idna_convert.class.php vor
class idna_convert { Zeile 52 eintragen.

FoxoF

Das hat jetzt geklappt. Vielen Dank marusti

stefan-wasp

@thorstn @FoxoF @marusti
Vielen Dank lieben Dank für den focus und diesen primär offenbar zielführenden Hinweis!

Ich konnte das Attribut / den TAG erfolgreich auf einer REV 55 mit PHP 8.2 anwenden.

Wesentliche Details:
https://kinsta.com/de/blog/php-8-2/#veraltete-dynamische-eigenschaften-und-das-neue-attribut-allowdynamicproperties-

Tests laufen ...

BG
stefan aka wasp
Use: UTF-8 w/o BOM

stefan-wasp

Lifetime für diesen Workaround sollten wir weiterhin hinterfragen / fokussieren.
Use: UTF-8 w/o BOM

muekrobe

Zitat von: FoxoF am 17. Oktober 2023, 16:44:27Ich habe das gleiche Problem wie am Anfang beschrieben. Daher habe ich zunächst, wie von harry60 beschrieben in der Datei 'idna_convert.php' in der Zeile 96 das '@' vor '$this->slast = $this->_sbase + ...' eingefügt. Das führte dazu, dass ich nicht mehr an den Template Ordner in der CMS komme. Er ist sichtbar aber geghosted.
Bei dem späteren Vorschlag von harry60 komme ich nicht so richtig weiter da ich mich mit PHP nicht auskenne
Zitat von: harry60 am 19. Juni 2023, 16:25:24Hallo,

es hat mir keine Ruhe gelassen - hier mein Ergebnis. Ich denke mal es braucht keine neue Programmierung.
Einfach nur die Zeilen ergänzen.

class Syntax extends stdClass {
...
}

und

class idna_convert extends stdClass {
...
}

sonst wird keine extra Zeile benötigt.
Ihr könnt ja mal testen ob es funktioniert, bei mir in PHP8.0 und PHP 8.2.4. hat es jedenfalls.
Auch mit allen plugins.

Ich nehme mal an, dass die Zeilen von harry60 oben in die Datei 'idna_convert.class.php' eingefügt werden müssen. An welcher Stelle sollte das geschehen?
Dann sind zwischen den geschweiften Klammern drei Punkte eingefügt. Müsste das so übernommen werden oder stehen die für etwas was dort eingefügt werden muss?

Jo, das Problem habe ich auch, wenn ich dort drei Punkte einfüge, kann ich mich garnicht mehr in Mozillo-Admin einloggen!
Wenn ich "@" vor $this->slast = einfüge, erscheint kein Fehler.
Abgesehen davon kann ich immer noch keine Bilder einfügen, da gdlib anscheind nicht installiert ist, was aber der Fall ist  :P