Manueller Aufruf von php-Scripten

Ich habe mir einige php-Auswertungen für die IPS-Umgebung geschrieben, die ich z.B. so im Browser aufrufe:

http://IP-Adresse:82/user/regelcheck/index.php

IP-Symcon läuft noch auf einem Windows-Rechner und mit Notepad war da schnell was programmiert. Ich möchte den Windowsrechner ablösen und die Symbox ist schon beschafft. Mein Hauptrechner ist ein Mac und der Zugriff auf den IPS-Rechner erfolgte per „Remote-desktop“.

Ich habe beispielsweise eine php-Auswertung in ein IPS-Script überführt und folgenden Zugriff in Safari eingegeben:

http://IP-Adresse:82/scripts/47384.ips.php
Ergebnis: „File not found“.

Wie kann ich solche Zusatzauswertungen zukünftig aufrufen?

Genauso wie zuvor. Sofern du die Dateien in den User Ordner kopiert hast.
Michael

Hm, das ist ja das Problem.
Mit dem Mac komme ich nicht mehr so einfach in den User-Ordner und dann habe ich mir gedacht: „Schreib die php-Programme eben mit IP-Symcon und nutze die Scriptnummern für den Aufruf“.
Noch schrecke ich davor zurück, mit der Konsole Scripte zu schreiben oder den SCP-Filetransfer zu machen.

Das funktioniert so nicht.
Alternativ kannst du noch einen Webhook auf ein Skript zeigen lassen.

Michael

Coole Idee - klappt auch!

Hilft mir leider nicht weiter, da die Ausgabe ins Protokoll geschrieben wird. Meine php-Scripte sind auf Online Ein- und Ausgaben ausgelegt.

Wie meinst du das?
Eine Ausgabe in einem Skript wird beim Aufruf über einen Webhook auch an den Browser zurück gegeben.
Michael

Im Browser eingegeben:
http://IP-Adresse:3777/hook/Scr?var=xxxxx
xxxxx ist die Scriptnummer.

Dieses Miniscript ruft die übergebene Scriptnummer auf:
$mV1 = $_GET[„var“];
IPS_RunScript($mV1);

Ergebnis: kein Online „Hello World“ sondern ein Eintrag von „Hello Word“ im Statusprotokoll.

Ja, weil das Script keine Ausgabe hat.
IPS_RunScript führt nur ein weiteres Script, aber in einem eigenen Thread, aus.
Mit IPS_RunScriptWait wird es funktionieren.
Alternativ das Script per include einbinden. Das benötigt aber den Dateinamen.
Michael

1 „Gefällt mir“

Nein, es kam kein online „Hello Word“ und das Statusprotokoll war auch leer.
Ich habe unter dem ips_runscriptwait einen zusätzlichen echo-Befehl eingegeben und der wurde angezeigt. Also Teilerfolg!
Das bedeutet für mich, dass ich pro Zusatzprogramm einen extra Webhook definieren muss - schaue ich mir an … dieser indirekte Aufruf hätte mir schon gefallen.

Einige meiner „Zusatzprogramme“ rufen als Auswahlmenü weitere PHP-Scripte auf - auch leider noch unklar :frowning:

Die Doku, welche ich oben verlinkt habe, zeigt doch das Beispiel mit echo.
Also:

$mV1 = $_GET['var'];
echo IPS_RunScriptWait($mV1);

Oder wie hier erklärt:
… ein Skript per ID direkt includen

$mV1 = $_GET['var'];
include(IPS_GetScriptFile($mV1));

Aaaaah
Klappt!!!
Ich habe einfach das „echo“ vor dem IPS_RunScriptWait überlesen.
Vielen Dank!!!

Kleine Anschlussfrage: kann ich in einem Auswahlmenü zum Aufruf weiterer php-Scripte z.B.: (Mist, php wird nicht angezeigt)

formaction=„action_insert.php“ value

Den Scriptnamen durch „echo IPS_Runscriptwait“ ersetzen?

Keine Ahnung was du meinst.
Aber PHP Scripte hier im Forum werden angezeigt.
Musst halt „Vorformatierter Text“ in deinem Beitrag benutzen.

Was du auf jeden Fall beachten solltest, Webhooks sind auch z.b. über den Connect Dienst erreichbar und haben keine Authentifizierung, wenn du sie nicht selber in das Script einbaust.
Michael

der vormatierte Text wurde mir leider am ipad nicht angeboten …

Ich würde gerne nach dem ersten Aufruf eines Auswahlmenüs weiter verzweigen:

<h2>Aktionen:</h2>
<p>
<input type="submit" name="eintragen" formaction="action_insert.php" value="Insert new">
</p>
<p>
<input type="submit" name="bearbeiten" formaction="action_edit.php" value="Edit marked">
</p>
<p>
<input type="submit" name="loeschen" formaction="action_delete.php" value="Delete marked">
</p>

jetzt suche ich eine Möglichkeit um aus dem Auswahlmenü die php-scripte aufzurufen, also bei Auswahl von „loeschen“ soll nicht mehr das script „action_delete.php“ aufgerufen werden, sondern das IPS-Script xxxxx.

Einige Alternativen mit echo IPS_RunscriptWait(xxxxx) mit/ohne <? und ?> und Anführungszeichen habe ich schon durch.

Die aufgerufene uri sollte in der globalen Variable $_SERVER enthalten sein.
Michael