PHP在raspberry pi上执行带有exec的python程序

时间:2015-10-12 00:48:36

标签: php python gpio

我正在运行一个apache服务器,我的覆盆子pi 2 B +上安装了php。在我的php文件中,我有代码

 echo exec("sudo chmod +x gpio.py && sudo python gpio.py 50");

哪个不起作用。但是,当我在本地计算机上的目录中运行此命令时,它可以正常工作。我也可以像ls一样运行

 echo exec("ls");

命令可行,但运行python代码的命令不起作用。我该如何解决这个问题呢?此python文件设置GPIO并将其设置为LOW。任何帮助,将不胜感激!感谢

SUDOER FILE

 #
 # This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification
www-data ALL = NOPASSWD: /var/www/bash.sh
# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL

1 个答案:

答案 0 :(得分:1)

您的Apache Server可能没有足够的权限来执行命令。你可以做很多事情,将你的www-data组添加到“sudo列表”中。这可以在/etc/sudoers中找到。

如果Apache组没有完整的sudo功能,则原始模型可能无法正常工作。一种解决方法可能是创建如下所示的shell脚本:

#!/bin/bash
sudo chmod +x gpio.py && sudo python gpio.py 50 2>&1

然后将PHP更改为以下内容:

echo exec("/path/to/my/script.sh");

您可能希望在/etc/sudoers文件中添加一些内容:

www-data ALL = NOPASSWD: /path/to/my/script.sh

尽管如此,考虑到在sudo列表中添加Web服务器并不是通常建议的,如果你可以解决它。