Fehlermeldung nach Update auf Version 5

  • Joomla Version
    5
    PHP Version
    PHP 8.2.x
    Hoster
    all-inkl.com

    Hallo,

    ich habe heute auf Joomla 5 geupdatet und bekomme jetzt folgende Fehlermeldung, wenn ich die Joomla-Update Komponente (com_joomlaupdate) aufrufe:


    Deprecated: Creation of dynamic property Joomla\CMS\Updater\Update::$sha256 is deprecated in /www/htdocs/w01d273c/markowski.de/libraries/src/Updater/Update.php on line 418



    Eine Neuinstallation der Joomla Core-Dateien erzeugt ebenfalls einen Fehler. Ein manuelles überschreiben der Coredateien via FTP brachte auch keinen Erfolg. Hat jemand einen Tipp für mich?


    Mirko

  • Ursächlich ist eine Erweiterung, nicht Joomla selbst. Das Debuggen, welche das nun im Detail sein könnte, ist mühsam.


    Richtig böse durchschlagen wird das Problem aber erst mit PHP 9. Ist ja bisher nur eine Deprecated-Meldung. Siehe Post #3 von Elwood


    Nur der Vollständigkeit wegen: Das sind die Zeilen 417 bis 419

    Code
    foreach (get_object_vars($this->latest) as $key => $val) {
     $this->$key = $val;
    }

    Letztlich ist dieses "Creation of dynamic property" aber mal wieder eine echt nervige Änderung von den PHP-Professoren ;) Ja ja, ich weiß schon. Alles der Sicherheit wegen...

  • Falls dem so ist, lässt sich ja herausfinden welche Erweiterung dafür verantwortlich ist.

    Es ist so (unvollständig):

    - Bisher durfte man Klassen/Objekten beliebig neue Eigenschaften hinzufügen. In diesem Falle dem

    Code
    $this

    - Man konnte also eine erfundene Property/Eigenschaft mittendrin erfinden

    Code
    $this->firlefanz = 'Tralala';

    - Zukünftig müssen die vorab definiert sein. In deiner bemeckerten Datei sind das diese Definitionen: https://github.com/joomla/joom…dater/Update.php#L43-L239 Andere sind ohne Gemecker nicht erlubt.

    - Jetzt musst also rauskriegen, was da im Code von Post #4 als nicht erlaubten $key eingeschleppt wird.

    - Bzw. musst rauskriegen, aus welcher Manifest-XML welcher Erweiterung das stammt bzw. für welche das in der Datenbank steht.

    - Eeeeeigentlich könnte man das Problem umgehen, wenn man vor die Zeile

    Code
    class Update

    schreibt:

    Code
    #[\AllowDynamicProperties]

    , was man auch im Joomla-5-Core noch zahlreich findet.


    - Da die Update.php aber eine Core-Datei ist und die obige Lösung, soweit ich mich erinnere, schon mal abgelehnt wurde, musst halt selbst rauskriegen, was schief läuft. Und soweit ich mich erinnere, war das gar nicht mal schnell erledigt.


    Soweit ich mich erinnere...

  • Hallo Re:Later,

    wenn ich dich also richtig verstehe, müsste ich die XML Dateien (für die Updates) und ggf. die entsprechenden Einträge in der #__extensions kontrollieren für alle Erweiterungen?



    Gibt es eigentlich noch eine andere DB Tabelle in der Daten zu dem Erweiterungen abgelegt werden?


    Code
    Deprecated: Creation of dynamic property Joomla\CMS\Updater\Update::$sha256 is deprecated in /www/htdocs/w01d273c/markowski.de/libraries/src/Updater/Update.php on line 418
    
    Deprecated: Creation of dynamic property Joomla\CMS\Updater\Update::$sha384 is deprecated in /www/htdocs/w01d273c/markowski.de/libraries/src/Updater/Update.php on line 418
    
    Deprecated: Creation of dynamic property Joomla\CMS\Updater\Update::$sha512 is deprecated in /www/htdocs/w01d273c/markowski.de/libraries/src/Updater/Update.php on line 418
    
    Deprecated: Creation of dynamic property Joomla\CMS\Updater\Update::$section is deprecated in /www/htdocs/w01d273c/markowski.de/libraries/src/Updater/Update.php on line 418


    Hier noch mal die vier Fehlermeldungen.


    Mirko

  • Weiß ich jetzt nicht auswendig, ob an der Stelle Daten aus der Manifest-Datei oder aus der #__extensions. Weiß nicht mehr, was $this->latest ist.


    Ich persönlich würde mir halt temporär einen Logger an der Stelle einbauen. Keine AHnung, ob so was als Filter klappt:


    Code
    if (!property_exists($this, $key))
    {
     Tu was loggen. Vielleicht $this->latest ???
    }
  • Ich hab jetzt mal testweise eine neue Joomla Installation aufgesetzt und alle verwendeten Erweiterungen installiert. Ergebnis ist, es gibt keine Fehlermehr. Daher würde ich die Dateien der Erweiterung als Fehler ausschließen.


    Dann kann es eigentlich nur noch zwei Möglichkeiten geben:


    1. Fehler in einer Core Datei (evtl. durch fehlerhaftes Update?)

    2. Fehler in der DB z.B. durch alte Daten.



    Die betroffene Joomla Installation gibt es auch schon seit Version 2.5.


    Ich bekommen übrigens jetzt folgende Fehlermeldung wenn ich versuche die Core-Dateien neu zu installieren:

  • Ich habe mal die Datei libraries/src/Updater/Update.php wie oben mit den 4 Zeilen ergänzt, dann verschwinden die vier deprecated-Meldungen.

    {