homa
23. Juni 2020 um 10:57
1
so… heute mit einem Symcon-Hygiene Thema…
Ich starte Scripte oft mit Übergabe von Parametern aus PHP heraus via >>IPS_RunScriptEx<< .
Das funktioniert gut.
Nachdem ich gerade das IPS >>Status Log<< anschau um die kleinen PHP Sünden bereinigen bin ich jetzt mit oben genannter Funktion und der daraus resultierenden WARNING stuck.
Hier die Warning:
M.E. ist die Warning so zu interpretieren, dass das aufgerufene Script erfolgreich gelaufen ist.
ABER… ich hab bisher keinen Ansatz gefunden mein verwendetes PHP so zu ändern, dass die WARNING der ScriptEngine nicht mehr kommt.
Was überseh ich ?
homa
paresy
23. Juni 2020 um 11:06
2
Nimm einfach die „echo“ oder anderen Ausgaben aus dem Skript raus.
paresy
homa
23. Juni 2020 um 11:13
3
bis auf ein auskommentiertes echo ist nur noch eine IPS_LogMessage drin die eine Fehlermeldung ausgibt wenn der CURL Aufruf schief geht…
diese log message würde ich nur ungern rausnehmen…
paresy
23. Juni 2020 um 11:36
4
Das LogMessage ist es nicht. Irgendetwas generiert die sichtbare Ausgabe. Das musst du abstellen.
paresy
homa
23. Juni 2020 um 11:59
5
muss wohl der Wald sein der mir den Blick auf die Bäume nimmt…
wenn ich nicht komplett blind bin ist keine Ausgabe in Form von Echo oder ähnlichem verbaut.
Hier mal das script (entpersonalisiert)
<?
//==================================
// Variablen Definition
//==================================
$parm1 = "dummy";
$parm2 = 4711;
$parm3 = "0";
$parm4 = "";
$parm5 = "";
$pushover_msg = "empty";
$ch = 0;
//$device = "XPeriaZ3";
$device = "XPeriaZ3"."gt-p5210";
$tmp_sound = "echo";
//==================================
// Get values of array
// passed by caller
//==================================
switch(true)
{
case(array_key_exists('p1',$_IPS)):
$parm1 = $_IPS['p1'];
break;
case(array_key_exists('p2',$_IPS)):
$parm2 = $_IPS['p2'];
break;
case(array_key_exists('p3',$_IPS)):
$parm3 = strval($_IPS['p3']);
break;
case(array_key_exists('p4',$_IPS)):
$parm4 = strval($_IPS['p4']);
break;
case(array_key_exists('p5',$_IPS)):
$parm5 = strval($_IPS['p5']);
break;
default:
}
if($parm4 == "ALARM")
{
$tmp_sound = "alien";
}
if($parm5 != "")
{
$device = $device.$parm5;
}
//==================================
// Set the pushover message
// Set up Pushover Rest Service Array
//==================================
$pushover_msg = $parm1." [".$parm2."]";
curl_setopt_array
(
$ch = curl_init(),
array
(
CURLOPT_URL => "https://api.pushover.net/1/messages.json",
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POSTFIELDS => array(
"token" => "<homa's token>",
"user" => "<homa's user>",
"message" => $pushover_msg,
"priority" => $parm3,
"retry" => "30",
"expire" => "300",
// "sound" => "echo",
"sound" => $tmp_sound,
"device" => $device,
//"title" => "tester"
),
)
);
//==================================
// If you got a successful handle
// ==> Fire the Pushover message
// Else
// ==> log an error
//==================================
if($ch != 0)
{
curl_exec($ch);
curl_close($ch);
}
else
{
IPS_LogMessage ("PushOver Transmitter", "Script-ID: 38365: PushOver Message kann nicht gesendet werden..., CURL handle = ".strval($ch));
exit ("Script-ID: 38365: PushOver Message kann nicht gesendet werden..., CURL handle = ".strval($ch));
}
?>
bumaas
23. Juni 2020 um 12:35
6
Beliebt (bei mir) sind auch weitere Zeichen hinter ?>
Nimm am besten ?> ganz weg. Das braucht man nicht mehr und wird auch irgendwann „verboten“.
Aber in deinem Fall ist es das Exit mit Stringausgabe.
homa
23. Juni 2020 um 13:48
7
ok… bin den brotkrumen gefolgt und habe >> ?> << am Ende des Scripts entfernt…
… leider ohne den gewünschten Erfolg… die Warning bleibt mir treu
1007
23. Juni 2020 um 14:01
8
Hallo
Bau mal folgendes in dein Script ein :
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
homa
23. Juni 2020 um 16:59
9
>>1007<<
die CURLOPT_RETURNTRANSFER war der richtige Tip. Eingebaut und das Elend hat ein Ende.
Vielen Dank!
homa