Skripts direkt aus der Shell ausführen

Hi,
ich habe ein Problem beim Debuggen vom Homegear-Scripts. Führe ich das Script von der Homegear CLI erhalte ich keine PHP-Ausgaben. Alles was mir angezeigt wird, ist der Exit Code 255. Irgendwelche Fehlermeldungen, die zu diesem Exit Code führen, kann ich nicht sehen.

Daher wollte ich das Skript aus der Shell direkt ausführen.

Script Test.php:

#!/usr/bin/env php
<?php
$hg = new \Homegear\Homegear();
$lichtStatus = $hg->getValue(8,1,"LEVEL");
?>

/var/lib/homegear/scripts/Test.php:

PHP Fatal error: Class ‘Homegear\Homegear’ not found in /var/lib/homegear/scripts/Test.php on line 3

Homegear Version: 0.6.7-1480

Das kann so nicht funktionieren, da der direkte Aufruf aus der Kommandozeile das installierte PHP des Systenms verwendet, also vermutlich irgendeine Version 5.x, während in Homegear PHP 7 einkompiliert ist.
In diesem einkompilierten PHP existiert dann auch als Erweiterung die Homegear Klasse.

Ich habe das für mich so gelöst, dass ich mir für das Debugging am Rechner eine eigene Homegear Klasse erstellt hat, welche per XMLRPC mit Homegear kommuniziert, dessen Aufrufe nach außen aber denen des einkompilierten Homegear gleichen.
Diese Klasse muss dann in das entsprechende Skript inkludiert werden. Damit aknn ich dann auch bequem am PC mit Netbeans Skripte debuggen,

Die Homegear PHP-Klasse habe ich mal als Beispiel hier angehangen …Homegear.php.txt (3,7 KB)

OK. Gibt es denn eine Möglichkeit, sich bei internen Skripten die PHP-Fehlermeldungen anzeigen zu lassen?

@DasKleingedruckte, magst du das Script mal auf Github stellen?

@gowif es spricht nichts dagegen zB mittels set_error_handler (http://php.net/manual/de/function.set-error-handler.php) die Fehler zu fangen oder mittels try/catch eine gezielte Fehlerbehandlung vorzunehmen. Mit der in Homegear eingebauten Methode writeLog (https://ref.homegear.eu/rpc.html#writeLog) kannst Du dann Ausgaben in das Homegear Logfile schreiben,

@pmayer ja kann ich machen. Ich kann das dann auch noch um ein paar Skripte/Klassen ergänzen, die ich mir zusammengebaut habe, um Homematic Geräte etwas mehr zu abstrahieren. Also je eine Klasse für Aktoren, Rolladen, E-Paper Display usw.
Allerdings muss ich zuvor nochmal durchschauen, inwieweit der Code vorzeigbar ist. In jedem Fall sind zuerst noch ein paar Kommentare nötig, damit jemand anderes damit glücklich wird.

1 Like

Find ich super :thumbsup:

Mein Homegear PHP Framework steht jetzt auf Github. Der dazugehörige Thread hier im Forum: Homegear PHP Framework

1 Like