JoomlaCamp 2018 Essen - 03.02.2017 in Essen

Joomla 3.6.0 + PHP 7: Probleme mit Umleitungen, .htaccess und 404-Fehlern

    Joomla 3.6.0 + PHP 7: Probleme mit Umleitungen, .htaccess und 404-Fehlern



    Werte Joomla-Gemeinde,

    ich
    kämpfe seit zwei Tagen mit einem Joomla-Problem und finde einfach
    keine Lösung. Vielleicht weiß ja jemand Rat, weil er den Kampf
    schon ausgestanden hat.

    Seit
    der Umstellung auf PHP 7 scheint meine Joomla-Installation
    Schwierigkeiten mit Umleitungen zu haben:

    1.
    Bei einem 404-Error wird mit den gegebenen htaccess-Einstellungen
    (siehe unten) nicht mehr ordnungsgemäß auf die Startseite
    umgeleitet. Auf PHP 5.6 erfolgte für alle 404-Fehler ein Redirect
    auf die Startseite. Auf PHP 7 geschieht Folgendes:

    Nehmen
    wir an,

    domain.de/gggdgd.html
    und domain.de/unterverzeichnis/gggsggs.html

    sind
    zwei nicht existierenden Unterseiten, die aufgerufen werden.

    Im
    ersten Fall wird zwar auf die Startseite umgeleitet, die jetzt
    allerdings unvollständig ohne den Inhalt des Mainbody-Bereichs
    geladen wird. Im zweiten Fall wird nun zu
    domain.de/unterverzeichnis/index.php und nicht mehr auf die
    Hauptseite umgeleitet. Da eine index.php im Untervereichnis gar nicht
    existiert, wird auch hier der Mainbody-Bereich ohne Inhalt geladen.

    2.
    Auch sämtliche Komponenten und Plugins, mit denen ich bislang
    seiteninterne Umleitungen bzw. eine 404-Seite oder 404-Umleitung
    (z.B. auf die Suchseite oder direkt auf die Domain, um das unschöne
    index.php zu vermeiden...) eingerichtet hatte, greifen nicht mehr,
    obwohl diese zumindest laut offizieller Angaben kompatibel mit PHP 7
    sein sollten (JSitemap, ReDJ).

    3.
    Auch meine Versuche, direkt über die htaccess erstellte Fehlerseiten
    anzusteuern oder die Error Cases per PHP mit entsprechenden
    Umleitungsangaben zu definieren, schlugen fehl. Es bleibt bei den
    fehlerhaften Umleitungen, wie unter 1.) geschildert.

    Anmerkungen:

    -
    Die suchmaschinenfreundlichen URLs werden mit PHP 7 sonst korrekt
    generiert.

    -
    Stelle ich zurück auf PHP 5.6 läuft alles, wie es soll - auch die
    Plugins und Komponenten greifen. Alle Mainbody-Inhalte werden korrekt
    geladen.

    -
    Das Problem ist definitiv unabhängig vom genutzten Template. Der
    Fehler tritt auch bei meinen anderen Joomla-Websites auf, wenn ich
    diese auf PHP7 umstelle.

    --------------------

    Meine
    Joomla-Version: 3.6.0

    Meine
    PHP-Version: 7

    Mein
    Webhoster: 1und1

    Meine
    .htaccess:

    Quellcode

    1. ##
    2. Mod_rewrite
    3. RewriteEngine
    4. On
    5. RewriteBase
    6. /
    7. ##
    8. Begin - Rewrite rules to block out some common exploits.
    9. RewriteCond
    10. %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
    11. RewriteCond
    12. %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
    13. RewriteCond
    14. %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    15. RewriteCond
    16. %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    17. RewriteRule
    18. .* index.php[F]
    19. ##
    20. Begin - Joomla! core SEF Section.
    21. RewriteRule
    22. .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    23. RewriteCond
    24. %{REQUEST_URI} !^/index\.php
    25. RewriteCond
    26. %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$
    27. [NC]
    28. RewriteCond
    29. %{REQUEST_FILENAME} !-f
    30. RewriteCond
    31. %{REQUEST_FILENAME} !-d
    32. RewriteRule
    33. .* index.php [L]
    34. AddType
    35. x-mapp-php7 .php



    Schon mal herzlichen Dank für eure Tipps und Lösungsvorschläge

    Mike ?(
    Ich habe es wie im anderen Forum reinkopiert, direkt aus dem Texteditor. Wollte es ja auch noch mal bearbeiten, aber entweder bin ich blind oder der Editierbutton ist verschwunden. ;(

    Hier noch mal die neueste Spur:

    Warning: Parameter 1 to JError::customErrorPage() expected to be a reference, value given in /homepages/xxx/libraries/legacy/error/error.php on line 781

    bei aktiviertem ReDJ Plugin:

    Warning: Parameter 1 to plgSystemReDJ::customError() expected to be a reference, value given in /homepages/xxx/libraries/legacy/error/error.php on line 781

    Besagte Zeile 781: return call_user_func($options, $error);
    Welche genaue Version von PHP7 habt ihr installiert? (System -> Systeminformationen)

    Am 2/3. August kommt 3.6.1 welche einige Fehler beheben soll. Ggf. Könnt Ihr einen test mit dem RC Paket machen (bitte nicht auf der produktiv webseite sondern einer test installation!)

    github.com/joomla/joomla-cms/releases/tag/3.6.1-rc1

    Bitte gebt Rückmeldung wenn Ihr noch weitere PHP7 oder andere Fehler seht :)
    Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe. (Rene Descartes, fr. Mathematiker und Philosoph, 1596 - 1650)
    ----------------
    Meine Webseite | Mein Joomler Account
    Bei 1und1 läuft PHP 7.0. Wie gesagt, stelle ich auf 5.6 zurück, treten die Probleme nicht auf.
    Ich vermute, in der /libraries/legacy/error/error.php liegt irgendwo das Problem. Diese wurde für das Joomla 3.6.0 Update verändert.
    Oder 1und1 hat etwas verändert. Allerdings kann ich nicht mit Sicherheit sagen, ob die Redirects überhaupt schon auf 7.0 funktioniert hatten. Das hatte ich bei der Umstellung vergessen zu testen.

    Meine bestehenden Seiten habe ich jetzt vorerst auf 5.6 zurückgestellt.

    An einem noch unvollendeten und unveröffentlichten Website-Projekt teste ich jetzt weiterhin mit PHP7. Ich probiere morgen mal noch ein paar Dinge aus, wobei ich die letzten zwei Tage schon so viel versucht hatte...

    Vielleicht bringt ja das Joomla-Update wirklich die Lösung. Und an 1und1 schreibe ich dann auch mal. Allerdings befürchte ich, wird es da nur eine wenig hilfreiche Standardantwort geben...
    Welche genaue PHP version habt Ihr 7.0 ist klar ;) ich meine 7.0.8 oder 7.0.9 etc das sollte in den Systeminformationen stehen.

    Auf7.0.9 gibt es noch Probleme: github.com/joomla/joomla-cms/pull/11360 welche aber mit 7.0.10 vom PHP core zurück genommen werden.
    Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe. (Rene Descartes, fr. Mathematiker und Philosoph, 1596 - 1650)
    ----------------
    Meine Webseite | Mein Joomler Account
    Ahhhh... im 1und1-Adminbereich hatte ich nie die genaue PHP-Unterversion einsehen können, hätte ich mal gleich in die Joomla Systeminformationen direkt geschaut.

    Grandios. Mit dem Fix funtioniert es.

    Bei Verwendung von Drittkomponenten müssen dann auch dort Anpassungen berücksichtigt werden.
    Im Falle des ReDJ Plugins:

    Zeile 627:

    static function customError(JException &$error)

    ändern zu

    static function customError(JException $error)


    1000 Dank für die hilfreichen Tipps!
    ich habe ebenfallls ein PHP Problem
    ich hab nachdem ich meine in meine Webseite nach Aktualisierung nicht mehr in die bearbeitung hineinkam die PHP version auf 7.0.8 aufstocken lassen, aber es geht noch immer nicht
    ich bekomme jetzt diese Fehlermeldung wenn ich mich anmelden will
    Failed to start the session: already started by PHP ($_SESSION is set).
    was kann ich Tun?
    Hallo Rita,

    Rita schrieb:


    Failed to start the session: already started by PHP ($_SESSION is set).

    Da dürfte die PHP 7 nicht gegriffen haben & Du bist immer noch (?) auf 5.3. Obiges wurde mit J 3.6.2 "gefixt". Da Du wohl nicht ins backend kommst versuche dies da:

    Rename the file libraries/joomla/session/handler/native.php
    Do a "save as" of: raw.githubusercontent.com/joom…ession/handler/native.php

    Save it as: native.php Copy it to: libraries/joomla/session/handler/native.php
    Close all browsers windows, restart your browser, login and upgrade to J3.6.2

    Quelle: github.com/joomla/joomla-cms/pull/11430
    Wenn erledigt, dann um die PHP Version kümmern.

    Oder es reicht, einstweilen bis alles auf J 3.6.2 erledigt ist, auf PHP 5.6 umzustellen.

    Liebe Grüße, Christine
    Hallo von mir,

    ich muss mich noch einmal melden, da ich das exakt gleiche Problem wie Mike habe.
    Bei der Umstellung auf php7.0 oder php7.1 funktioniert kein SEO mehr. Es kommt die Meldung:


    Wenn ich die php Version bei 1un1 wieder auf 5.6 zurückstelle, dann funktioniert die Seite wieder einwandfrei. Auch ohne SEO geht es... ist aber unschön, da wir gerne in Scuhmaschinen auftauchen würden.

    Ich habe versucht durch den Wust an Programmen zu blicken, die es ermöglichen sollen eine .diff Datei als patch für die error.php zu benutzen. Leider hatte ich keinen Erfolg. Ich scheine da wohl nicht genug in der Materie zu stecken...

    Gibt es nicht einfach eine gepatchte error.php? Müsste das Problem nicht Tausende andere ebenfalls betreffen?
    Ich habe übrigens Joomla 3.6.5.

    Vielleicht wäre ja jemand so großartig noch einen Hinweis zu geben oder die entsprechende error.php an mich zu senden.

    Vielen Dank!
    Hallo @Cloud,
    Der Patch von oben ist in der aktuellen 3.6.5 bereits enthalten und er hatte nichts mit der error.php zu tun, er war im redirect-plugin.

    Dein Problem heisst "Using $this when not in object context" und die Frage ist, woher das kommt.
    Die error.php gibt nur die Meldung aus, ist aber wahrscheinlich nicht die Ursache (ich kenne das template nicht).

    Auf der Seite, die du da anklickst bekomme ich die Information "Ein Plugin wird benötigt umd den Inhalt zu sehen" oderso. Das könnte die Ursache sein.
    Flash ist mausetot - schalte mal das Plugin dafür ab, vielleicht war es das schon.

    EDIT: unisono ... slider könnte es auch sein .. :)
    Grüße, Christiane
    ----------------
    JUG München | | Wicked Software - Blog
    Danke für die Tipps. Den Image Slider hab ich schonmal entfernt... seltsam finde ich halt nur, dass es funktioniert, wenn SEO nicht aktiviert ist. Das spricht für mich gegen ein Pluginproblem. Aber ich werde mich heute nachmittag mal daran machen und schauen obs nach Deaktivierungen irgendwann klappt. Ergebnisse gebe ich dann bekannt.
    Es kann auch eine Komponente sein, die ein genes Routing mitbringt. Ausser phoca sehe ich gerade keine Komponente - und Phoca wirft in der aktuellen Version diesen Fehler nicht. Auch hier fragt sich, ob du alles auf dem neuesten Stand hast.

    Ich würde erst mal auf ein anderes Template umschalten - protostar zum Beispiel. Tritt der Fehler dann auch auf? Wenn nein, liegts an deinem Template.
    Wenn ja: Alle Erweiterungen aktualisieren. Tritt der Fehler immer noch auf?
    Wenn ja: Alle Erweiterungen deaktivieren. Tritt der Fehler immer noch auf? Uhhh ... dann ist es übel ..:)
    Wenn nein: Erweiterungen eine nach der anderen wieder zuschalten - bis der Übeltäter gefunden ist.
    Grüße, Christiane
    ----------------
    JUG München | | Wicked Software - Blog
    Hallo nochmal - ich bin noch dran...
    bisher habe ich den Tipp mit dem Template ausprobiert, hatte aber leider keinen Erfolg.
    An die Erweiterungen mache ich mich in Kürze, da dies wahrscheinlich etwas mehr Zeit in Anspruch nehmen wird...

    Übrigens: Die Startseite geht auch mit php 7 - nur ein beliebiger Link, den ich dann anklicke nicht. (Ich weiß nicht, ob ich das schon erwähnte)...
    Nein das hast du nicht erwähnt. Hoster ist 1und1. Vielleicht klingelt da bei einem der anderen was?

    Du hast oben eine Fehlermeldung: Using $this when not in context ... das wäre ein Fehler in einer Komponente.

    Nun sagst du: Ein beliebiger Link den du anklickst bringt eine Fehlermeldung. Ist es immer dieser Fehler oder bekommst du dann eine 404 - Meldung?
    Grüße, Christiane
    ----------------
    JUG München | | Wicked Software - Blog
    Hi! Vielen Dank nochmal für die Hilfe!
    Inzwischen läuft die Seite unter php 7.1. Es war tatsächlich wohl tatsächlich eine Extension, die das Problem verursacht hat. Ich habe allerdings mehrere Deinstalliert, da sie auch nicht mehr unbedingt notwendig waren. Darunter waren neben ein paar kleinen Addons zum Beispiel ExtraWatch, JEvents und der TinyMCE...

forum.joomla.de is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries.