PHP Skript läuft nicht mehr seit Update

  • Hallo Zusammen,


    ich habe bei mir im Hause eine KNX Installation über die ich auch Sonos Speaker steuere. Dazu nutze ich ein PHP Skript, welches auf dem Webserver des QNAP läuft. Das ganze lief nun viele Jahre völlig problemlos.

    Kürzlich gabe es für mein QNAP ein Update 5.0.1.2514 build 20230906. Seit lässt sich mein Sonos nicht mehr über den Taster einschalten. Da ich sonst nichts geändert habe, habe ich mal das QNAP downgegraded (5.0.1.2376 build 20230421 vom April). Und sie da, läuft. Ansonsten keinerlei Änderungen bei mir im System. Kann sich jemand erklären, was sich in der Richtung verändert hat?

    Markus

  • Evtl. die PHP Version auf dem NAS?


    Gruss


    Lt. RN offenbar aber nicht. Welche Fehler wirft denn das Script aus, wenn Du ?errors anhängst?

    Einmal editiert, zuletzt von FSC830 ()

  • Ich bin leider kein Experte und hab das ganze mit viel Youtube ans laufen gebracht. Wie muss ich das anstellen?


    Markus

  • Einfach ?errors an den Aufruf in der URL hängen. Wenn Du das Script mit http(s)://mydomain.xyz/script.php aufruft, dann eben mit http(s)://mydomain.xyz/script.php?errors, dann sollten Fehler ausgegeben werden.


    Gruss

  • Wenn ich mit der funktionierenden FW das eingebe:

    http://192.168.1.25/index.php?zone=Bad&action=nextRadio

    kommt:

    Code
    Deprecated:  Function fgetss() is deprecated in /share/CACHEDEV1_DATA/Web/PHPSonos.inc.php on line 2258

    Bei

    http://192.168.1.25/index.php?zone=Bad&action=nextRadio?errors

    Code
    Fatal error: Uncaught Exception: Action [nextRadio?errors] does not exist in /share/CACHEDEV1_DATA/Web/sonos.php:98
    Stack trace:
    #0 /share/CACHEDEV1_DATA/Web/sonos.php(66): Sonos->_assertAction('nextRadio?error...')
    #1 /share/CACHEDEV1_DATA/Web/sonos.php(13): Sonos->_main()
    #2 /share/CACHEDEV1_DATA/Web/index.php(8): Sonos->__construct()
    #3 {main} thrown in /share/CACHEDEV1_DATA/Web/sonos.php on line 98

    Mit der nicht funktionierenden QNAP Firmware habe ich nicht mehr getestet.

    Wie gesagt, bin absoluter Laie hier.



  • Na ja, mit der funktionierenden FW ist nichts zu erkennen, denn sie funktioniert ja 8o .

    Die "deprecated" Warnung sagt aber, das eine veraltete Funktion verwendet wird, die in einer neueren PHP Version nicht mehr geht (gibt dann einen error).

    Du gibst im Aufruf an das PHP Script verschiedene Parameter mit &, in dem Fall musst Du als letztes &errors anhängen, das ?errors funktioniert so nicht.


    Gruss

    Einmal editiert, zuletzt von FSC830 ()

  • Du hattest oben ?errors geschrieben. Ich versuchs nochmal mit &errors


    So jetzt habe ich das ganze nochmal mit der nicht funktionierenden FW probiert. Kannst Du daraus was lesen?


    Bei: http://192.168.1.25/index.php?zone=Bad&action=nextRadio&errors kommt:

    Bei: http://192.168.1.25/index.php?zone=Bad&action=nextRadio kommt:

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

  • ?errors kommt nur ans Ende der Zeile, wenn man eine PHP Seite ohne Angabe von Variablen aufruft.

    Du rufst aber die Seite mit Variablen auf, die erste beginnt mit ?, der Rest mit &, daher musst Du am Ende ein &errors anfügen.

    Das war zuerst nicht bekannt, wie Du das Script aufrufst.


    Zur alten FW: da kommt die Warnung, das die function fgetss veraltet ist, in der neuen FW müssen Variablen und Funktionen vorher deklariert werden, das ist für die function fgetss nicht das Fall:

    Code
    Fatal error: Uncaught Error: Call to undefined function fgetss() in /share/CACHEDEV1_DATA/Web/PHPSonos.inc.php:2258

    Und die Funktion utf8_encode wird nun auch als veraltet gemeldet.

    Ich bin mir nicht sicher, mit welcher PHP Version das kam, mit 8.2 jedenfalls definitv.

    Mit anderen Worten: das Script ist leider für eine PHP Version 7.x(?) geschrieben und wird spätestens mit 8.x nicht mehr laufen.

    Du musst sehen, ob Du ein aktualisiertes Script irgendwoher kriegst oder selber anpassen.


    Gruss