sto eseguendo Nginx sul mio Raspberry PI con PHP 5.4.14 (fpm-fcgi). Funziona tutto bene. Ma in uno script faccio una chiamata di shell usando shell_exec.
echo shell_exec("sudo python " . $file);
funziona bene se uso la console con
php test.php
ma se uso il browser per call questo file, il file php verrà eseguito ma non ricevo output da shell_exec (nemless un messaggio di errore).
Quindi spero che tu possa aiutarmi a risolvere questo problema.
Il file python chiamato fa uso del GPIO, quindi è necessario sudo, giusto?
Ecco il mio codice Python:
#!/usr/bin/env python try: import RPi.GPIO as GPIO except RuntimeError: print "Error Importing GPIO. Did your forgot the superuser privilieges?" GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup(3, GPIO.OUT) GPIO.output(3, not GPIO.input(3)) print "New LED state is: ", GPIO.input(3) #GPIO.cleanup()
per riferimento futuro:
Ho trovato un – io i miei occhi – non una soluzione davvero bella:
sudo echo "apache ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Trovato qui .
Mm, ho provato con questo semplice esempio:
/Scripts/test.py
#!/usr/bin/env python print (str('hello world'))
/var/www/test.php
<?php echo shell_exec('/Scripts/test.py'); ?>
tramite un browser, mostrami "ciao mondo"
Forse prova questo:
chmod a+x your_py_file.py
Spero che aiuti ..