Php 8 bringt Probleme

  • Hi,

    ich habe einen Server mit Joomla 3.10.11 am laufen. Wenn ich Php auf 8 umstelle, kann ich in der Adminumgebung nicht mehr alles machen:

    Diese Seite funktioniert nicht

    schulz-u.de kann diese Anfrage momentan nicht verarbeiten.

    HTTP ERROR 500


    Und die Weblinks kann ich auch nicht mehr aufrufen:

    Die angeforderte Seite konnte nicht gefunden werden!

    Läuft denn 3.10.x nicht mit PHP 8?


    Beim Server, der eine Installation mit 4.2.2. läuft, bekomme ich Fehlermeldungen von einer Seite, auf der ein PHP-Script von mir läuft:

    fclose(): Argument #1 ($stream) must be of type resource, bool given


    date(): Argument #2 ($timestamp) must be of type ?int, string given


    Beide Scripts laufen aber super durch den PHP-Checker. Bei einem anderen Provider laufen PHP-Scripts (z.B. mit Fclose) durch, bei Strato nicht???



    Danke

    Gruß

    Ulli

  • Welche genaue PHP-Version wird dir dort z.B. angezeigt wenn du auf PHP8 umgestellt hast:


    /administrator/index.php?option=com_admin&view=sysinfo


    Wenn du auf PHP 8 umgestellt hast dann gib uns hier per Dateianhang am besten auch die konkreten Systeminformationen per

    System -> Systeminformationen -> Als Text herunterladen


    /administrator/index.php?option=com_admin&view=sysinfo

  • Hallo,

    danke für die schnelle Info.

    Anbei die Datei mit den PHP-Infos von dem 3.10.er-Server.


    Zu den Fehlern auf dem 4er-Server: Ich habe schon gelesen, dass es z.B. bei fclose bei den PHP-Versionen <8 nur Warnungen waren und ab PHP 8 als Fehler gewertet werden. Natürlich habe ich das Script so geändert, dass es durchlaufen sollte, klappte aber nicht.


    Gruß

    Ulli

  • Sind ja etliche Joomla- Erweiterungen installiert.


    Sind denn alle installierten Joomla-Erweiterungen(ID ab10000) PHP8 ready ?

    /administrator/index.php?option=com_installer&view=manage


    Eventuell nützlich um die Fehlerursache einzugrenzen:


    Fehler finden durch detailliertere Fehlermeldung. Debug-Modus. Call stack.

  • Hallo,

    so, ich habe weiter in den Foren gestöbert und gefunden, dass man den JCE-Editor updaten sollte (warum?), habe ich gemacht und Weblink habe ich auch gleich erneuert, mit Erfolg, die Seite und die Weblinks laufen wieder. Und auch in der Adminumgebung kann man wieder arbeiten.


    Und auch das Problem mit fclose in der Joomla-Version 4 ist gelöst. Am Problem Date() arbeitet ich noch.


    Danke für deine Hilfe.

    Gruß

    Ulli


    Ach ja, ein Problem bleibt noch: wenn ich bei Strato auf PHP 8 umstelle, läuft Ownloud nicht:


    This version of ownCloud is not compatible with PHP 8.0

    You are currently running PHP 8.0.22.


    Hier muss ich wohl noch ein wenig surfen....

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: Ein Beitrag von ullischu mit diesem Beitrag zusammengefügt.

  • dass man den JCE-Editor updaten sollte (warum?)

    Updates sollte man immer zeitnah einspielen. Mit Updates werden neue Funktionen und Erweiterungen eingebaut und an neue Systeme angepasst.

    Ausserdem werden Fehler behoben und, ganz wichtig, es werden Sicherheitslücken geschlossen.


    Durch Sicherheitslücken könnte deine Webseite gehackt werden, und es könnte über deine Seite Spam verbreitet werden. Das gilt natürlich

    für alle Extensions/Template/Framework und Joomla.



    Ach ja, ein Problem bleibt noch: wenn ich bei Strato auf PHP 8 umstelle, läuft Ownloud nicht:


    This version of ownCloud is not compatible with PHP 8.0

    You are currently running PHP 8.0.22.

    Da würde ich ggf. noch warten, da dran gearbeitet wird:


    PHP 8.0 · Issue #40241 · owncloud/core
    Our IT team installed PHP 8.0 due to PHP 7.4 is going to be deprecated soon. All our projets is running fine on PHP 8.0 except owncloud. We have the latest…
    github.com


    Vermutlich wird aber auch Strato PHP 7.4 weiter gegen Bezahlung supporten.


    Ansonsten würde ich einen anderen Cloud-Anbieter wählen.

  • PHP8 macht wesentlich strengere Prüfungen was Datentypen betrifft.


    Dein Fehler bei fclose könnte daran liegen, dass das zugehörige fopen nicht erfolgreich war. Dann wird der binäre Wert false zurückgegeben. Wenn man dann trotzdem ein fclose mit dem false macht, kommt dieser Fehler.


    Der PHP Checker kann so etwas nicht merken, da er das Script garnicht ausführt und somit nicht wissen kann, was in den Variablen steht.