繁体   English   中英

无法从php执行python脚本

[英]Cannot execute python script from php

我在树莓派上。 所有文件的权限,包括python脚本,如下所示:

#!/usr/bin/python
from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.output(11, False)
sleep(0.4)
GPIO.output(11, True)
sleep(1.6)
GPIO.output(11, False)
sleep(1)

全部由www-data拥有,并且所有文件都设置为777(是的,我知道这并不聪明,但我正在尝试对其进行修复。)它使用sudo运行,我的visudo文件在此处:

www-data ALL=(ALL) NOPASSWD: /var/www/gateopener.py /usr/bin/python /bin/chmod

这是PHP ...

<?php
if (($_POST["safe2"]) != "good") {
    header("Location: http://xx.xxx.xx.xxx/index.html");
}
ignore_user_abort(true);
set_time_limit(0);
`/usr/bin/sudo /var/www/gateopener.py`;
?>

现在有人告诉我为什么这不起作用? 我尝试了它的不同变体(EI使用不同的权限来移动文件)。 我也尝试过使用php的exec()函数...请帮助我。

run_me_as_daemon.py

#!/usr/bin/python
from time import sleep
import RPi.GPIO as GPIO
import os
while True:
   if not os.path.exists("open_gate.txt"):continue
   os.remove("open_gate.txt")   # FILE DELETE !!! so we dont re-enter
   with open("log.txt","w") as f:
     print >>f,"Opening GATE @ %s"%(time.strftime("%x %X"),)
     GPIO.setmode(GPIO.BOARD)
     print >>f, "Set Mode To %s"%(GPIO.BOARD,)
     GPIO.setup(11, GPIO.OUT)
     print >>f, "SET 11 to %s"%(GPIO.OUT) 
     GPIO.output(11, False)
     print >> f,"output low signal 11"
     sleep(0.4)
     GPIO.output(11, True)
     print >> f,"output high signal to 11"
     sleep(1.6)
     GPIO.output(11, False)
     print >> f,"output low signal 11"
     sleep(1)
     print >> f,"Competed TASK"

index.php

<?php
if (($_POST["safe2"]) != "good") {
    header("Location: http://xx.xxx.xx.xxx/index.html");
}
file_put_contents("open_gate.txt"," ");
?>

是一种可能的解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM