以root权限运行python程序_zp blog-树莓派系列(八):PHP之以root权限执行Python GPIO脚本...

上篇开门神器,我最终用的是树莓派做控制器,因为它本身就一直开着,不让它多干些事岂不浪费(是不是有种黑心老板的节奏)。我通过连接树莓派和L298N来实现控制电机,程序上使用的Python操作端口(需要安装Python GPIO库),写了个脚本,然后再通过php调用这个脚本实现开门。

问题:

在树莓派上单独执行这个Python脚本是能开门的,但通过php调用就不行。

但用Python写个简单的建目录脚本,php调用时可以执行的。

综上分析Python GPIO 库是需要root权限的。

解决:

直接赋予Apache或nginx ROOT权限(感觉不安全 下下策)

按网上所说方法用C程序更换用户UID…编译好执行(失败,还是单独执行可以调用不可以)

变通,让这个脚本主动轮询某个文件内值,php控制这个文件(至少能用起来,但总感觉这个方法不怎么好)

修改/etc/sudoers文件,赋予特定用户特定权限(上上策)

#vi  /etc/sudoers 插入下列一行

www-data ALL=(ALL) NOPASSWD: /usr/bin/python opendoor.py#php里调用

system("sudo /usr/bin/python opendoor.py")

附:

树莓派控制电机代码 opendoor.py :import RPi.GPIO as gpio

import time

gpio.setmode(gpio.BOARD)

gpio.setup(29, gpio.OUT)

gpio.setup(31, gpio.OUT)

gpio.output(29, True)

gpio.output(31, False)

time.sleep(2.5)

gpio.output(31, False)

gpio.output(29, False)

time.sleep(1)

gpio.output(31, True)

gpio.output(29, False)

time.sleep(0.7)

gpio.cleanup()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值