【问题标题】:Raspberry PI: PHP call python script with sudoRaspberry PI:使用 sudo 的 PHP 调用 python 脚本
【发布时间】:2013-06-06 14:37:42
【问题描述】:

我正在使用 PHP 5.4.14 (fpm-fcgi) 在我的 Raspberry PI 上运行 Nginx。这一切都很好。但在一个脚本中,我使用 shell_exec 进行了 shell 调用。

echo shell_exec("sudo python " . $file);

如果我将控制台与

一起使用,效果会很好
php test.php

但如果我使用浏览器调用此文件,php 文件将被执行,但我没有得到 shell_exec 的任何输出(甚至没有错误消息)。

所以我希望你能帮我解决这个问题。

调用的python文件使用了GPIO,所以需要sudo,对吧?

这是我的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()

【问题讨论】:

    标签: nginx raspberry-pi sudo php


    【解决方案1】:

    供将来参考:

    我发现了一个 - 我的眼睛 - 不是很好的解决方案:

    sudo echo "apache ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
    

    找到here

    【讨论】:

      【解决方案2】:

      嗯,我尝试了这两个简单的例子:

      /Scripts/test.py

      #!/usr/bin/env python
      print (str('hello world'))
      

      /var/www/test.php

      <?php
      echo shell_exec('/Scripts/test.py');
      ?>
      

      通过浏览器,显示“hello world”

      也许试试这个:

      chmod a+x your_py_file.py
      

      希望有所帮助..

      【讨论】:

      • 我一回到家就会对此进行测试。但我仍然在那里缺少一个 sudo 。还是不需要?
      • 所以在chmod 之后我至少收到了一条错误消息。 “导入 GPIO 时出错。您是否忘记了超级用户权限?”这意味着由于 GPIO,我仍然遇到缺少 sudo 的问题。我在上面的问题中添加了python代码。
      猜你喜欢
      • 2015-10-25
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 2014-11-07
      • 1970-01-01
      相关资源
      最近更新 更多