2016-12-01 4 views
0

Ich versuche, den Code unten aus einer PHP-Seite auf meinem BeagleBone schwarz auszuführen:Run Python-Code von PHP-Seite auf BeagleBone

import Adafruit_BBIO.PWM as PWM 

red = "P8_13" 
green = "P8_19" 
blue = "P9_14" 

PWM.start(red, 0) 
PWM.start(blue, 0) 
PWM.start(green, 0) 

PWM.set_duty_cycle(red, 100) 
PWM.set_duty_cycle(green, 0) 
PWM.set_duty_cycle(blue, 0) 

Dieser Code ist nur mein RGB rote LED einzuschalten.

Meine PHP-Seite unten:

<!DOCTYPE html> 
<html> 
<head> 
     <meta charset="UTF-8"> 
     <title>RGB LED</title> 
</head> 
<body> 
Testing led.py execution...<br> 
<?php 

exec("python led.py"); 

?> 
<br>End of execution!<br> 
</body> 
</html> 

Ich bin mit Apache2 und PHP5.

Der Code ist auf dem gleichen Weg von PHP-Seite ("/ var/www"). Ich habe bereits exec, shell_exec und Systembefehle ausprobiert, um das Skript auszuführen. Die LED leuchtet nicht rot. Der Code hat bereits 777 Berechtigungen. Ich weiß wirklich nicht, warum es nicht funktioniert. Hat jemand eine Idee?

Vielen Dank.

+2

erhalten Sie irgendwelche Fehlermeldungen? Loggen Sie sich im Debug-Modus ein? –

+1

auf vielen Systemen 'Apache' läuft als' www-data' Benutzer mit verschiedenen Berechtigungen und mit verschiedenen Umgebungsvariablen als normale Benutzer. – furas

+0

Danke @furas. Ich habe www-data auf sudoers datei erlaubt. –

Antwort

0

Ich will mit diesem Problem nicht wirklich gehen tief. Aber ich schreibe dir das, weil ich einmal mit einer BBB gespielt habe und einen lustigen Erlaubnisfehler beim Ausführen von Python-Skripten hatte. Ich habe Befehle ohne sudo ausgeführt. Versuch es bitte. Ich weiß nicht, warum es eine sudo haben sollte, aber es funktioniert!

0

Problem gelöst. Danke @furas. Ich fügte "www-data ALL = (root) NOPASSWD:/usr/bin/python" zur sudoers Datei hinzu und änderte auch exec ("python led.py") zu exec ("sudo python led.py").