+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 16
  1. #1
    Registriert seit
    Mar 2014
    Beiträge
    219

    Standard Unterdrückte PHP-Fehler im Logfile und Meldungsfenster

    Hallo,

    vielleicht eine dumme Frage (wobei dumme Fragen gibt es ja eigentlich nicht ): War es schon immer so und ist es gewollt, dass mittels @-Operator unterdrückte PHP-Fehler trotzdem ins Logfile und das Meldungsfenster geschrieben werden?

    Irgendwie ist mir das jetzt aufgefallen, da eine potenziell auftretende und unterdrückte Warnung, die bisher nicht eingetreten ist, nun auftritt und ich diese dann entsprechend im Log sehe, was - zumindest in dem Fall - eigentlich unnötig ist.

    Gruß
    Slummi

  2. #2
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    20,762

    Eigentlich passiert dies nicht. Hast du mal ein Beispiel?

    paresy

  3. #3
    Registriert seit
    Sep 2014
    Ort
    Limeshain (Hessen)
    Beiträge
    5,281

    Hatte ich neulich auch bei jemand. In einem Modul von mir wurden PHP-Warnungen (zB „array_key_exists“) unterdrückt und von mir selbst „ausgewertet“. Auf keinem meiner IPS-Installationen wurde die Warnung ausgeben - bei einem User erschien die PHP-Warnung aber im Log!
    Das war arg seltsam und meine „Lösung“ war am Ende - im Modul umbauen, damit das @ nicht mehr benötigt wird.

    Viele Grüße,
    Chris
    IP-Symcon Module >> www.bayaro.net << Verfügbare Module: BatterieMonitor, BundesligaTabelle, Enigma2BY, HeizölPreise, Helios, Horoskop, HostMonitor, IPSInformations, MELCloud, Müllabfuhr, PJLink, RSS, TankerkönigSpritpreise, xREL
    IPS Unlimited, ~1200 Scripte, ~7000 Variablen

  4. #4
    Registriert seit
    Mar 2014
    Beiträge
    219

    Also ich kann das eigentlich beliebig bei mir reproduzieren.

    Aufgefallen ist es mir bei
    PHP-Code:
    $variablen_id = @IPS_GetVariableIDByName($value12345); 
    Hier kann es vorkommen, dass $value einen nicht existierenden Namen hat. Deswegen werden potenzielle Warnungen unterdrückt.
    Im Skript selbst funktioniert das auch problemlos. Im Log und im Meldungsfenster taucht die Warnung aber (neuerdings?) auf.

    Aber es passiert auch bei so banalen Dingen, wie:
    PHP-Code:
    $test = @(10 0); 
    Führe ich das Skript manuell aus, wird die Division durch 0 Warnung nicht angezeigt, im Log und im Meldungsfenster taucht sie jedoch auf.

  5. #5
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    20,762

    PHP: Fehler-Kontroll-Operatoren - Manual

    Wurde ein benutzerdefinierte Fehlerbehandlungsfunktion mit set_error_handler() registriert, dann wird diese immer noch aufgerufen, aber diese benutzerdefinierte Fehlerbehandlung kann (und sollte) error_reporting() aufrufen, das 0 zurückgeben wird, wenn dem Aufruf, der den Fehler auslöste, ein @ vorangestellt war.
    Ich kann es mir nur damit erklären. Somit muss du irgendwo einen eigenen Error-Handler nutzen. (z.B. den IPSLogger?)

    paresy

  6. #6
    Registriert seit
    Mar 2014
    Beiträge
    219

    Ich nutze aber keinen eigenen Error-Handler. Wüsste zumindest nicht wo.
    Habe gerade mal alles nach set_error_handler abgesucht. Keine Treffer. Den IPSLogger nutze ich auch nicht.

    Dann würde mir noch noch einfallen, dass irgendein Modul da in Sachen Error-Handler was macht. Aber wie kriege ich das am besten raus? Hatte zunächst das Patami Framework in Verdacht. Das nervt mich schon seit längerem mit irgendwelchen blöden Exceptions (im Fall eines Skript-Fehlers), die gar nichts mit dem Framework zu tun haben. Aber habe da auf die schnelle auch nichts gefunden.

    BlindControl habe ich seit ein paar Tagen testweise installiert. Das hat einen Verweis auf den IPSLogger, aber wenn ich die Library nicht habe, dürfte es das ja auch nicht sein.

    Hast du eine Idee, wie ich alle Module systematisch prüfen kann?

  7. #7
    Registriert seit
    Feb 2009
    Ort
    Hamburg
    Beiträge
    2,088

    Das kann ich bestätigen. Seit der 5.1 habe ich das auch. Fehler gehen ins Log obwohl ein @vor dem Code ist.

    Gruß,
    Peter


    Gesendet von iPhone mit Tapatalk
    -MacMini(2011) =>Parallels 11=>Win7, FB7390, EIB-KNX, DMX-ArtNet, 2x EM24 DIN, SONOS ZP100/120/Play:1/Play:5/Sub, 1Wire=>Wiregate, xbee=>ROOMBA, Dreambox, DENON 2313, 8x Philips HUE -

  8. #8
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    20,762

    Seht ihr die Fehler auch im Skript-Editor beim Ausführen? Könnt ihr mir mal ein kleines Beispiel geben?

    paresy

  9. #9
    Registriert seit
    Mar 2014
    Beiträge
    219

    Nein, wie gesagt, im Skript-Editor werden die Meldungen sauber unterdrückt.

    Ich erstelle z.B. ein neues Skript mit dem einzigen (sinnfreien) Inhalt
    PHP-Code:
    <?

    $test 
    = (10 0);
    Führe ich es im Skript-Editor aus, kommt logischerweise
    Warning: Division by zero in C:\IP-Symcon\scripts\17323.ips.php on line 3
    Im Log und dem Meldungsfenster kommt
    08.07.2019, 15:49:55 | PHP Error | Type: E_WARNING
    Message: Division by zero
    File: C:\IP-Symcon\scripts\17323.ips.php
    Line: 3

    Ändere ich das Skript nun in
    PHP-Code:
    <?

    $test 
    = @(10 0);
    kommt im Skript-Editor keinerlei Meldung, im Log und Meldungsfenster aber unverändert die Meldung wie oben.

  10. #10
    Registriert seit
    Mar 2008
    Ort
    Ruesselsheim
    Beiträge
    3,447

    Das kann ich so nicht bestaetigen. Bei
    PHP-Code:
    $test = @(10 0); 
    Kommt bei mir weder einen Meldung im Debug noch in der Logdatei.

Ähnliche Themen

  1. Fehler in __generated.inc.php
    Von Fonzo im Forum Allgemeine Diskussion
    Antworten: 2
    Letzter Beitrag: 27.08.17, 22:19
  2. IPS-Start dauert ewig -> Fehler im logfile
    Von Proxima im Forum Allgemeine Diskussion
    Antworten: 2
    Letzter Beitrag: 07.02.17, 15:50
  3. Eigenes Logfile erstellen und als TextBox ausgeben
    Von kitejack im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 5
    Letzter Beitrag: 03.10.16, 11:58
  4. IPS_GetUpdateMicrotime und Logfile
    Von Ferengi-Master im Forum Skripte, PHP, SQL
    Antworten: 6
    Letzter Beitrag: 20.05.08, 15:37