+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 17
  1. #1
    Registriert seit
    Feb 2018
    Ort
    Bochum
    Beiträge
    702

    Standard Änderung von Funktionsparametern wird in __generated.inc.php nicht nachgefühlt

    Hallo,

    ich habe ab und an folgendes Problem:

    wenn ich bei der Modul-Entwicklung einer vorhandenen public-Funktion, also einer Funktion, die bereits in der __generated.inc.php steht, an den Parameter etwas ändere, z.B. einen hinzufüge, wird das in der __generated.inc.php nicht nachgeführt und daher gibt es Fehlermeldungen.

    Dabei ist egal, ob ich die Änderung per MC_ReloadModule() oder per GUI ein Modul-Update bekannt mache - ich vermute, das die intern verwendete Funktion sowieso die gleiche ist.

    Nur ein Restart des IPS hilft, dann wird ja die __generated.inc.php komplett neu aufgebaut.

    Ist das etwas, was man auch ohne IPS-Restart beheben kann?

    Das kann ja schon mal sein, das ein Funktionsaufruf sich ändert - sollte natürlich nach Möglichkeit nicht sein, aber ist ja nicht auszuschliessen.

    Gruß
    demel

  2. #2
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    9,412

    Also bei mir hat das bisher immer mit MC_Reload funktioniert.
    Aber eventuell hat sich da ja etwas geändert, seitdem IPS ja die __generated nicht mehr ausversehen kaputt macht.
    Michael
    PS: Ich schiebe es in den Entwickler Bereich.
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  3. #3
    Registriert seit
    Feb 2018
    Ort
    Bochum
    Beiträge
    702

    Zitat Zitat von Nall-chan Beitrag anzeigen
    Also bei mir hat das bisher immer mit MC_Reload funktioniert.
    Aber eventuell hat sich da ja etwas geändert, seitdem IPS ja die __generated nicht mehr ausversehen kaputt macht.
    Michael
    PS: Ich schiebe es in den Entwickler Bereich.
    Danke,

    zum Nachtrag: das passiert mir auch bei IPS 5.0

    demel

  4. #4
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    9,412

    Also bei 5.0 und 5.1 hat das bei mir definitiv funktioniert.
    Wird das Modul den überhaupt neu geladen?
    Tauchen entsprechende Einträge im LogFile/Meldungen auf?
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  5. #5
    Registriert seit
    Feb 2018
    Ort
    Bochum
    Beiträge
    702

    Zitat Zitat von Nall-chan Beitrag anzeigen
    Also bei 5.0 und 5.1 hat das bei mir definitiv funktioniert.
    Wird das Modul den überhaupt neu geladen?
    Tauchen entsprechende Einträge im LogFile/Meldungen auf?
    Michael
    Ja ganz sicher, definitiv die üblichen Meldungen im Logfile und keine Fehlermeldung.
    Bei einem anderen User ist es heute aufgetreten, als er ein Modul von mir upgedatet hat.

    Ich werde aber morgen nochmal einen Test machen um es (hoffentlich) nachvollziehbar zu machen.

    Ich melde mich wieder.

    Gruß
    demel

  6. #6
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    9,412

    Was definitiv nicht geht, und bei der generated zu Problemen führt, sind Module mit identischen Präfix, gleicher Funktion aber unterschiedliche Parameter dieser Funktion.
    Hast du sonst ein Beispiel zum anschauen?
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  7. #7
    Registriert seit
    Feb 2018
    Ort
    Bochum
    Beiträge
    702

    Zitat Zitat von Nall-chan Beitrag anzeigen
    Was definitiv nicht geht, und bei der generated zu Problemen führt, sind Module mit identischen Präfix, gleicher Funktion aber unterschiedliche Parameter dieser Funktion.
    Hast du sonst ein Beispiel zum anschauen?
    Michael
    Zuletzt aufgetreten in GitHub - demel42/IPSymconNetatmoSecurity: Access to Netatmo Security-Products

    Da habe ich zB. in NetatmoSecurityCamera in der Funktion GetTimeline() den Parameter withDebug hinzugefügt.

    Und CodingLizard hatte mir folgendes gemeldet:

    ---------
    Cannot register function NetatmoSecurity_CleanupVideoPath: Parameter count does not match
    ---------
    bei dem Update des Moduls.

    bei der Funktion kam ebenfalls ein Parameter dazu: preferLocal

    das Modul ist noch beta, daher die Änderungen ...

    demel

  8. #8
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    9,412

    Die Meldung ist korrekt, es gibt keine optionalen Parameter bei Instanz-Funktionen.
    Und du hast da einen:
    IPSymconNetatmoSecurity/module.php at 7ac2d5997d8e8336ffd461eaffafbad9649c40ce · demel42/IPSymconNetatmoSecurity · GitHub
    Trick 17, so wie bei bei einigen IPS Funktionen:
    GetTimeline()
    Und
    GetTimelineEx($Value)
    Michael
    Geändert von Nall-chan (21.07.19 um 19:09 Uhr)
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  9. #9
    Registriert seit
    Feb 2018
    Ort
    Bochum
    Beiträge
    702

    Zitat Zitat von Nall-chan Beitrag anzeigen
    Die Meldung ist korrekt, es gibt keine optionalen Parameter bei Instanz-Funktionen.
    Und du hast da einen:
    IPSymconNetatmoSecurity/module.php at 7ac2d5997d8e8336ffd461eaffafbad9649c40ce · demel42/IPSymconNetatmoSecurity · GitHub
    Trick 17, so wie bei bei einigen IPS Funktionen:
    GetTimeline()
    Und
    GetTimelineEx($Value)
    Michael
    Ok, verstehe ich. Ist auch nicht wirlich optional, kann ich ändern ... aber
    1. er hat sich geweigert die Funktion (aus einem Script) aufzurufen
    2. nach IPS-Reboot war es kein Problem mehr und funktioniert einwandfrei.

    Ist mir ja eigentlich klar, das es da keine optionalen Parameter gibt und gebe beim Aufruf natürlich alle Parameter ab.


    Bei dem 2. Fall war es (aus dem Gedächtnis) ein optionaler Parameter, der weggefallen ist ...

    Ich werde morgen mal etwas testen, ob sich das darauf zurückführen lässt.

    demel

  10. #10
    Registriert seit
    Feb 2018
    Ort
    Bochum
    Beiträge
    702

    Zitat Zitat von Nall-chan Beitrag anzeigen
    Die Meldung ist korrekt, es gibt keine optionalen Parameter bei Instanz-Funktionen.
    Hallo Nall-chan,

    ich habe heute morgen weiter versucht und kann den Zusammenhang mit opt. Parametern nicht herstellen.

    Umfass einfach nachstellen zu können habe ich ein Modul angelegt (GitHub - demel42/Test)

    Das enthält eine FUnktion

    PHP-Code:
    public function TestFunc()
        {
            return 
    'abc';
        } 
    Modul ganz normal installiert, ein Script angelegt

    PHP-Code:
    <?

    echo Test_TestFunc(56880 /*[Test]*/);
    Ausgabe ist natürlich "abc";

    Dann habe ich die Funktion geändert

    PHP-Code:
    public function TestFunc(string $s)
        {
            return 
    'abc';
        } 
    dann

    PHP-Code:
    <?

    MC_ReloadModule
    (31892 /*[Modules]*/'Test');
    im Logfile kommt:

    22.07.2019 10:27:20 | 00000 | MESSAGE | ModuleLoader | #Modul entladen: Test
    22.07.2019 10:27:20 | 00000 | MESSAGE | ModuleLoader | #Bibliothek entladen: Test
    22.07.2019 10:27:20 | 00000 | MESSAGE | ModuleLoader | Überspringe Built-In Bibliothek...
    ...
    2.07.2019 10:27:20 | 00000 | MESSAGE | ModuleLoader | Lade Test Bibliothek...
    22.07.2019 10:27:20 | 00000 | MESSAGE | ModuleLoader | # Test geladen
    22.07.2019 10:27:20 | 00000 | MESSAGE | PHPLibrary | Registriere Funktionen... TEST_TestFunc
    22.07.2019 10:27:20 | 00000 | MESSAGE | PHPLibrary | Registriere Funktion... TEST_TestFunc: Nicht registrierbare Funktion TEST_TestFunc: Parameter count does not match
    trotzdem ein Versuch:

    PHP-Code:
    <?

    echo Test_TestFunc(56880 /*[Test]*/'def');
    [Fatal error: Uncaught ArgumentCountError: Too few arguments to function Test::TestFunc(), 0 passed in /var/lib/symcon/scripts/__generated.inc.php on line 5067 and exactly 1 expected in /var/lib/symcon/modules/Test/Test/module.php:34
    Stack trace:
    #0 /var/lib/symcon/scripts/__generated.inc.php(5067): Test-&gt;TestFunc()
    #1 /var/lib/symcon/scripts/48712.ips.php(3): TEST_TestFunc(56880, 'def')
    #2 {main}
    thrown in /var/lib/symcon/modules/Test/Test/module.php on line 34
    Eintrag in __generated.inc.php:

    PHP-Code:
    function TEST_TestFunc($InstanceID)
    {
        if(
    IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{B85F0CC0-5764-4A5B-9E6F-069CE00C46C4}") {
            require_once(
    '/var/lib/symcon/modules/Test/Test/module.php');
            
    $result = (new Test($InstanceID))->TestFunc();
        }
        elseif(
    IPS_GetInstance($InstanceID)["ModuleInfo"]["ModuleID"] == "{B85F0CC0-5764-4A5B-9E6F-069CE00C46C4}") {
            require_once(
    '/var/lib/symcon/modules/Test/Test/module.php');
            
    $result = (new Test($InstanceID))->TestFunc();
        }
        else {
            throw new 
    Exception("Instance does not implement this function");
        }
        return 
    $result;

    Meine Umgebung ist Ubuntu und Raspberry, dieser Versuch ist unter IPS 5.0 (IP-Symcon 5.0, Ubuntu, 13.12.2018, 93cb63bbeb25)

    Was mache ich falsch, was kann ich noch testen?

    Gruß
    demel

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 30.09.17, 17:13
  2. Fehler in __generated.inc.php
    Von Fonzo im Forum Allgemeine Diskussion
    Antworten: 2
    Letzter Beitrag: 27.08.17, 22:19
  3. Antworten: 1
    Letzter Beitrag: 19.01.16, 08:34
  4. VC6 wird von PHP nicht mehr unterstuetzt
    Von axbigo im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 7
    Letzter Beitrag: 07.11.11, 14:52