Script abbrechen mit die() oder exit () markiert script als fehlerhaft

Hallo zusammen

Ich habe eine für mich nicht verständliche Funktionsweise von IP-Symcon Version: 4.3 (18.08.2017) entdeckt:

Wenn ich ein PHP-Script vorzeitig beenden will verwende ich in der PHP-Programmierung entweder

exit();

oder

die();

Wenn ich in einem IPS-Script eines der beiden Kommandos benutze wird der Script als fehlerhaft markiert, funktioniert aber ansonsten wie gewünscht.

Wenn ich dagegen

return;

verwende, funktioniert mein script einwandfrei und wird auch nicht als fehlerhaft markiert.

Ist dies wirklich so beabsichtigt ? :confused:

Gruss Letraz

Ja,ist es.
So kannst du im Script gezielt steuern ob du es normal beenden willst, oder IPS das Script als Fehlerhaft markieren soll (z.B. weil du im Script auf eine Fehler gelaufen bist der eine weiter Ausführung verhindert).
Michael
PS: War aber schon ‚immer‘ so. Nicht erst seit 4.3

Danke Michael.

Ich sagte nicht, dass das Problem erst bei 4.3 auftritt, ich habe es einfach erst jetzt bemerkt :stuck_out_tongue:

Ebenfalls läuft mein Script nicht auf einen Fehler, welcher eine Weiterführung verhindert. In möchte bewusst den Script abbrechen, resp. eine Weiterführung verhindern. Wie gesagt es funktioniert „unschön“, weil der Script als fehlerhaft markiert wird, obschon da gar kein Fehler vorliegt.

Ein einfaches Beispiel verdeutlicht die Problematik:

if($_IPS['SENDER'] == 'Execute' or $_IPS['SENDER'] == 'WebFront')
{
  die("Manuelle Ausführung nicht erwünscht");
}

Ist ein Bug in meinen Augen und kein Feature :wink:

Einfach Echo nutzen für die Meldung (dann taucht es auch im WebFront auf) und dann Return.
Das ist kein Bug, sondern ein Feature :wink:
Michael