簡體   English   中英

Apache PHP命令將無法控制Raspberry Pi GPIO

[英]Apache PHP command wont control Raspberry pi GPIO

好吧,這里是Raspberry Pi和Python / PHP / Apache的新手。 我試圖讓我的PHP腳本運行我創建的python文件,以通過家庭網絡激活5v繼電器。 在通過SSH的終端中,我可以激活Python腳本,它可以控制我的中繼。 當我嘗試通過Web服務器上的PHP腳本激活中繼時,我什么也沒得到。 我的PHP腳本和Python腳本如下。 任何幫助是極大的贊賞!

我的Python代碼位於/ home / pi中,為“ garagedoorleft.py”,而我的PHP代碼位於/ var / www / html中,為“ index.php”

<html>
<head>
<meta charset="UTF-8" />
<title>Example document</title>
</head>


<?php
if (isset($_POST['LeftOPEN']))
{
exec("sudo python /home/pi/garagedoorleft.py");
}
?>
<form method="post">
<button name="LeftOPEN">Left Door</button>&nbsp;


</form>
</html>



#!/usr/bin/python

# Import required Python libraries
import RPi.GPIO as GPIO
import time

# Use BCM GPIO references instead of physical pin numbers
GPIO.setmode(GPIO.BCM)

# init list with pin numbers

pinList = [2]

# loop through pins and set mode and state to 'low'

for i in pinList: 
    GPIO.setup(i, GPIO.OUT) 
    GPIO.output(i, GPIO.HIGH)

def trigger() :
        for i in pinList:
          GPIO.output(i, GPIO.LOW)
          time.sleep(0.5) 
          GPIO.output(i, GPIO.HIGH)
          GPIO.cleanup()


try: 
    trigger()


except KeyboardInterrupt:
  print "  Quit" 
  # Reset GPIO settings
  GPIO.cleanup()

我不確定exec如何與管道一起工作,什么不可以,但我認為您可以做到

exec("echo SUDO_PASSWORD_FOR_MACHINE | sudo -S -p '' python my_gpio.py")

這將通過stdin將sudo密碼傳遞給sudo命令...我不確定執行這樣的操作有多安全...

或者您可以嘗試提升特權

如果Python腳本添加到頂部

 import sys,os
 if os.getuid() != 0:  # not sudo so spawn as sudo
    exit(os.system("echo SUDO_PASSWORD_FOR_MACHINE | sudo -S -p '' python %s"%sys.argv))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM