我正在运行一个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
答案 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服务器并不是通常建议的,如果你可以解决它。