Variablen von php zu python

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
Justuv
User
Beiträge: 3
Registriert: Donnerstag 10. Januar 2013, 06:27

Hallo, man verzeihe die möglicherweise primitive Frage, aber ich begreife es einfach nicht (bin ganz frisch zu python gekommen)
Folgendes existiert:
#!/usr/bin/env python
#coding: utf8
import sys

print("Content-Type: text/plain\n\n")

port = (sys.argv[1])
value = (sys.argv[2])

print port
print value

und funktioniert tadellos von der Konsole mit z.B: "sudo python aktion.py 11 22".
Liefert mir korrekt diese 2 Parameter bei print.

Nicht funktioniert der Aufruf per php-script:

<?php
echo shell_exec("sudo python /usr/local/bin/scripte/aktion.py XXXX");
?>

Dabei habe ich schon unzählige Varianten für "XXXX" probiert - keine Erfolge. Es sollen aber hier konkret 2 Werte übergeben werden wobei ob int oder str eigentlich egal ist. Werden dann im python script per if/elif weiterverarbeitet.
Das Script "aktion.py" wird aufgerufen, aber keine Parameter übernommen. Wer hat dazu einen einfachen, kurzen Tip für mich? Irgendwie stehe ich hier auf dem Schlauch. . .
Danke für jede Hilfe
Justuv
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Justuv: was passiert denn? Gibt es Fehlermeldungen? Wird das Skript gefunden und gestartet?
Justuv
User
Beiträge: 3
Registriert: Donnerstag 10. Januar 2013, 06:27

Sirius3 hat geschrieben:@Justuv: was passiert denn? Gibt es Fehlermeldungen? Wird das Skript gefunden und gestartet?
Ich habe da leider keine Fehlermeldungen. Meine aktion.py hat da noch einen Befehl zum setzen eines GPIO's. Damit prüfe ich ob dieses Script überhaupt gestartet wird. Funktioniert auch top auf der Konsole. aber nicht per php. Jeder Versuch Parameter zu übergeben scheitert. Dann wird das Script entweder gar nicht ausgeführt oder stoppt. Ich sehe aber nur das GPIO 12 dann nicht schaltet.
Script:
#!/usr/bin/env python
#coding: utf8

import RPi.GPIO as GPIO
import sys
import time

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(12, GPIO.OUT)

port = int(sys.argv[1])
value = int(sys.argv[2])

GPIO.output(port, GPIO.HIGH)
time.sleep(.5)
GPIO.output(port, GPIO.LOW)

#nachfolgendes als Kontrolle ob aktion.py aufgerufen wird

GPIO.output(12, GPIO.HIGH)
time.sleep(.5)
GPIO.output(12, GPIO.LOW)

Wichtig! der prinzipielle Aufruf des scripts per php funktioniert. Wenn der hervorgehobene Teil auskommentiert ist. Mit dann :
<?php
echo shell_exec("sudo python /usr/local/bin/scripte/aktion.py");
?>
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

noch jemand mit Hosenträger-Gürtel Mentalität... Exakt den gleichen Thread gibt's auch im Raspi-Forum: https://forum-raspberrypi.de/forum/thre ... ch-python/

@Justuv: oder möchtest du einfach nur möglichst viele Leute mit deinem Porblem beschäftigen?

Nimm' einfach auch Python für den Server, weil das a) eh' besser ist und b) hast du dann auch keine Übergabeprobleme.

Gruß, noisefloor
Antworten