Beiträge von woj

    Ergänzend zu Re:Later # 3

    Vielleicht als Nachtlektüre: https://www.php.net/manual/de/function.session-start.php

    Danke dass Sie als einzige in diesem Thread versucht haben tatsächlich auf die gestellte Frage zu antworten.

    Ich habe inzwischen die Ursache des Problems selbst gefunden. (Alle 08:15 Benutzer brauchen das nicht zu wissen und fahren natürlich besser wenn sie auf eine neuere Joomla Version setzen, deren Fehler heute noch nicht so bekannt sind wie die der alten..)

    Darum ausschliesslich der Vollständigkeit halber: Das Problem lag in dispatcher.php bei der Zeile:
    $key = key($this->_observers);
    die in PHP7 nicht mehr funktioniert, da die foreach loops den internen Status des Arrays $this->_observers nicht mehr verändern.. (derselbe Code ist per copy/paste noch an diversen anderen Stellen: observable.php, editor.php, captcha.php & authentication.php und es bleibt zu hoffen das neuere Versionen tatsächlich ohne solche Anfänger copy/paste Orgien auskommen...)

    Das wird ja immer besser "weil du zu faul und selbstverliebt bist" aber immerhin hierfür hat sich ein einzelnes Examplar inzwischen tatsächlich qualifiziert; "glaubst hier wären nur Spacken unterwegs"..

    Hier nochmal nur für den "Spacko" (die zivilisierte Mehrheit ist hier nicht gemeint und braucht sich auch nicht angesprochen zu fühlen): "One size fits all" Lösungen posaunt man wohl dann in die Welt, wenn man seine Gegenüber von vornherein als Super-DAUs betrachtet (aber ohne jegliche Kenntnis der konkreten Situation ist das einfach nur dumm, wie der Arzt der gleich den Blinddarm entfernt ohne den Patienten erst nach seinem Problem zu fragen - "ach so du hast eine DMZ", "ach so du hast security patches nachgezogen", .. wer hier wohl selbstverliebt ist...)

    Die Infos von Sieger66 waren zwar nett gemeint, aber die Seiten hatte ich bereits gelesen. (Und ich weiss nicht wieso ich trotz expliziten Hinweis im ersten Satz meiner Frage nochmal den Link auf die Anleitung für's Updaten bekomme.. "one size fits all".. diese Anleitung hatte mich bereits nach der erstmaligen Lektüre darin bestätigt, meine Daten/Erweiterungen bestimmt nicht bei dem beschriebenen Prozedere auf Spiel zu setzen..)

    Da ich inzwischen (nach obigem Lernprozess) die Zielgruppe dieses Forums erkannt zu haben glaube, bin ich dann auch mal raus.

    Spannend... ich habe hier in einem Bereich der explizit "Ältere Joomlaversionen/Joomla 2.5" heisst, sachliche Informationen zum Thema dieses Threads "Version 2.5 und PHP 7.1 Problem" gegeben.

    Ich habe in diesem Thread überhaupt keine Ratschläge gesucht. sondern Informationen gegeben mit denen jeder machen kann was er will. (Ich habe auch niemandem empfohlen die alte Version zu nehmen.)

    Ich musste mir daraufhin unsachliche persönliche Angriffe gefallen lassen "zeigt wie weit weg du vom Thema bist und wie wenig man deinen Tipps folgen sollte" und wenn ich auf eine direkt an mich gerichtete Frage "wo ist dann eigentlich dein Problem Erweiterungen zu portieren" antworte, dann hält man MIR die Forenregeln vor und ich bin es plötzlich der einen Thread gekapert hat?!

    Wenn für diese "community" alte nicht mehr supportete Versionen ein Tabu sind, dann wäre es vielleicht hilfreich den entsprechenden Bereich zu entfernen - dann kommt auch niemend auf die Idee hier zu dem Thema Informationen zu suchen.

    2.5.9 hat gravierende Sicherheitslücken und aus. Wenn du in der Lage bist, Code zu portieren, wo ist dann eigentlich dein Problem Erweiterungen zu portieren.


    Und PHP7 als "Etikettenschwindel" zu bezeichnen, zeigt wie weit weg du vom Thema bist und wie wenig man deinen Tipps folgen sollte.

    Wow.. was für fundierte Argumente! WEIL ES SO IST, PUNKT! Sind wir hier in der Kirche? Da du offenbar der grosse Experte oder zumindest Vorbeter bist, erzähl doch mal welche Sicherheitslücken das sind und welche Vorraussetzungen gegeben sein müssen damit man sie ausnutzen kann (ich bin sicher Du kennst mein DMZ/Hosting Setup aus dem EffEff)!

    Ich hatte eigentlich gehofft, dass hier auch Leute sind die was von Softwareentwicklung verstehen: Natürlich könnte ich auch Erweiterungen portieren, nur dass mir dabei mit hoher Wahrscheinlichkeit ein Vielfaches des Aufwandes entstehen würde: Die PHP7 bedingten Anpassungen sind verhältnissmässig klar umrissen und erfordern kein tiefgreifendes Verständnis des zu portierenden Codes. Die Portierung eine Erweiterung auf eine neue Joomla Version erfordert dagegen *zusätzlich* detailiertere Kenntnisse der Joomla Quell-/Ziel-Architektur sowie der Erweiterung und bedingt einen deutlich höheren Regression-Test Aufwand. (Lustig das man das überhaupt jemandem erklären muss..)

    Daneben kann ich mein Glück aber kaum fassen, in dir offenbar gleich auch noch einen Experten für Programmiersprachen gefunden zu haben. Dann erzähl doch als Erstes mal mit welchen Sprachen du denn fundierte Programmiererfahrungen hast und über welchen Zeitrum du sie beruflich eingesetzt hast. Ich bin aber schon jetzt überrascht, wenn du beim life-cycle management von PHP tatsächlich keine Unterschiede zu dem von anderen Programmiersprachen erkennen solltest.. (spoiler: suche mal nach Abwärtsinkompatible Änderungen)

    Darf/soll/muss ich den Link hier posten, damit ihr den Fehler sehen könnt? http://annibarth.de/administrator/index.php

    Die angezeigten Fehlermeldungen sind nur die Spitze des Eisbergs (vgl. meine erste Antwort).. die " Array to string conversion" Meldungen kommen von der Semantik-Umstellung der indizierten Zugriffe: $a->$b[$c] wurde vor PHP7 als $a->{$b[$c]} evaluiert.. aber bei PHP7 bedeutet es ($a->$b)[$c] .. darum kann das nicht mehr funktionieren und um dieses Problem zu fixen müssen im Code explizit die {} ergänzt werden um wieder die alte Semantik zu erzwingen..

    Bedenke, dass PHP 7 erst ab Joomla 3.5 läuft. Vorher solltest du zum Aktualisieren besser 5.4 nutzen!


    Es klingt etwas merkwürdig, wenn du schreibst, was sich jetzt so bzgl. der PHP-Version geändert hat.

    PHP 7 gibt es schon länger und die erwähnten Punkte sind alles alte Kamellen. Joomla 4 steht auch so langsam in den Startlöchern.

    Dein Joomla 2.5.9 hättest du längst aktualisieren müssen, da es höchst sicherheitsanfällig ist.

    Hier liest wohl jemand nur die Hälfte: soweit ich sehe geht es in DIESEM Thread um "Version 2.5 und PHP 7.1 Problem"

    und genau darum habe ich Infos zu dieser Kombination gegeben (leider erschöpfen sich die Antworten zu diesem Thema meist in sinnlosen "musst Du altes PHP nehmen!" bzw. "musst Du neues Joomla nehmen!" .. sinnlos deshalb weil man sich die vom Hoster angebotene PHP Version nur sehr bedingt aussuchen kann und weil es Leute gibt die alte Plugins nutzen deren Hersteller es längst nicht mehr gibt und die NULL Interesse daran haben, ihre bestehende gut funktionierende Web-Seite nur deshalb neu zu schreiben, weil ihr Hoster keinen Bock mehr hat, nebst der aktuellen schlechten PHP Version auch die alten schlechten PHP Versionen weiter anzubieten).

    Ich habe meine Joomla 2.5.9 Instanz längst auf PHP5.6 portiert aber das bringt leider nichts wenn mein Honk von Provider ab Ende Monat nur noch PHP >7 anbietet.

    Und meine Joomla 2.5.9 Instanz läuft mit PHP7.2 weil ich den Code entsprechend portiert habe (was mir das deulich kleinere Risiko scheint, als die Migration meiner Daten/Plugins auf eine andere Major-Version von Joomla)! Und "I could not care less" ob es irgendwelche neuen Joomla Versionen gibt oder geben wird (Ich bin ein Anhänger der vergessenen "if it ain't broken don't fix it" Schule..). Und wenn ich mir die "green banana" Software ansehe, die im PHP und oder Joomla Umfeld üblich zu sein scheint, dann kann ich nur laut lachen, wenn mir jemand mit "sicherheitsanfällig" kommt - wenn das meine Sorge wäre würde ich bestimmt kein PHP/Joomla benutzen.

    Meine Frage richtet sich an Leute die sich mit der Joomla 2.5 Framework Logik/Struktur auskennen - und den Tip doch auf eine neuen Joomla Version umzustellen brauche ich nicht.

    Habe meine alte Joomla 2.5.9 Installation auf PHP7.2 migriert: Die normale Seite läuft schon mal aber beim Versuch das Admin-UI zu starten zeigt, dass es noch ein Problem bei der Session-Verwaltung gibt: Trotz korrekter Login Daten springt das UI immer wieder auf die Login Maske (es gibt dabei keinerlei Fehlermeldungen im

    Log und der hinein gepatchte Trace Output sagt, dass die Authentisierung erfolgreich ist).

    Interessant ist dabei folgender Effekt; Wenn ich den Apache zuvor mit PHP5.6 starte (auf diese Version hatte ich als ersten Schritt migriert) und bei derselben Joomla Instanz den obigen Login mache, dann funktioniert das tadellos. Wenn ich dann den eingeloggten Browser offen lasse und im Hintergrund den Server mit PHP7 neu starte, dann kann ich direkt wieder im Joomla Admin-GUI weiter machen (d.h. die PHP7 Fassung kann zwar korrekt mit einer bestehenden - via PHP5.6 angelegten - Session weiter machen, schafft es aber nicht eine einsprechende Session selbst korrekt anzulegen. Der Logout funktioniert dann von der PHP7 Fassung aus ebenfalls nicht, d.h. man bleibt eingeloggt.)

    Wenn hier jemand weiss wo die entsprechende Framework Logik durch läuft (bzw. der wahrscheinliche Auslöser für dieses Verhalten sein müsste), so würde dies meine Suche deutlich beschleunigen.

    Bin selbst dabei meine alte 2.5.9 Installation (mit Plugins die es für 3.x nicht mehr gibt, bzw. deren Anpassungen ich nicht auf neuer Basis nochmal nachstellen will) auf PHP7.2 zu portieren.

    Das Grundproblem ist ja, dass PHP7 ein jämmerlicher Etikettenschwindel ist - so als hätte man "Java" dazumals "C++ V2" genannt, d.h. um den alten Code damit wieder zum Laufen zu bringen sind Querbeet Anpassungen nötig, z.B.

    • Semantik von $x->$y[$z] wurde geändert, d.h. muss jetzt $x->{$y[$z]} heissen damit es wie vorher läuft
    • JRegistry: die 2.5.9 Impl funktioniert mit PHP7 nicht und führt zu der typischen initialen "not authorized,, " Meldung (das kann man leicht fixen indem man z.B. die setter/getter von der Registry Impl aus 3.9 übernimmt, evtl. reicht auf der obige Fix)
    • preg_replace muss man ersetzen weil nicht mehr vorhanden
    • dann gibt es diverse Warnings die man beheben kann (aber vermutlich nicht muss): count($xx) Tests sollte man neu verbinden mit einen vorgängigen Test ob es überhaupt ein Array ist; z.T. wurden im alten Code Methoden in Sub-Klassen mit falschen Signaturen überschrieben, nicht statische Methoden wurden aufgerufen als ob sie statisch wären - und irgendwelche Spezial-Hirnis erwarten dann auch noch $this Pointer in der statischen Methode (ich glaube das war aber in einem der Plugins); Funktionen liefern jetzt per default eine Referenz d.h. entsprechenen "=& " Code kann man sich sparen.
    • die Warnungen "PHP Notice: Only variables should be passed by reference" sollte man unbedingt ignorieren - denn führt man die gewünschten Variablen ein, dann läuft plötzlich gar nichts mehr.. (die neue PHP Version ist wohl die alte Scheisse in einer neuen Farbe...)
    • etc

    Bis auf ein Problem mit der Session-Verwaltung scheint es bei mir schon mal zu laufen - und das müsste hoffentlich auch noch zu beheben sein.. die Migration ist aber eine Fleissübung (v.a. wenn man wie ich mit dem Joomla Framework nicht vertraut ist).