无法通过apache并将exec()与sudo一起使用来运行php gpio
在运行Raspbian 3.10.25的Raspberry Pi型号B-Rev2上,我按照上的说明控制管脚。但我不能让它工作。根据说明,这应该是无法通过apache并将exec()与sudo一起使用来运行php gpio,php,debian,raspberry-pi,raspbian,gpio,Php,Debian,Raspberry Pi,Raspbian,Gpio,在运行Raspbian 3.10.25的Raspberry Pi型号B-Rev2上,我按照上的说明控制管脚。但我不能让它工作。根据说明,这应该是triggerMyScript.php中的命令: exec('sudo -t /usr/bin/php ./myGpioScript'); 但是根据myGpioScript中的内容,我在Apache日志error.log中得到了一些错误,比如命令找不到和没有这样的文件或目录 我还按照指示添加了/etc/sudoers 如果我从命令行运行php trig
triggerMyScript.php
中的命令:
exec('sudo -t /usr/bin/php ./myGpioScript');
但是根据myGpioScript
中的内容,我在Apache日志error.log
中得到了一些错误,比如命令找不到
和没有这样的文件或目录
我还按照指示添加了/etc/sudoers
如果我从命令行运行
php triggerMyScript.php
,它的效果非常好。花了几个小时后,我找到了解决方案。除了php gpio上的说明之外,我还需要做以下事情:
- 在
中,第一行必须是myGpioScript
而不是#/usr/bin/php
#/usr/bin/env php
- 我必须在
之后添加-t
,就像这样:php
exec('sudo-tphp/usr/bin/php./myGpioScript')代码>(仔细想想,这是有道理的,但说明并不是这样说的)
- 我不得不将它添加到sudoers文件中:
——这样www-data也可以不受限制地运行php。实际上,没有必要为实际脚本文件指定权限李>www-data-ALL=NOPASSWD:/usr/bin/php
对任何文件的文件权限都不相关,因此只需将其设置为较低的权限。您缺少的主要是sudoers文件的一部分。这是能够像sudo一样运行脚本或命令的基础。如果python有此问题:pi ALL=NOPASSWD:/usr/bin/python/home/pi/scripts/python\u gpio\u scripts/script.py。我不建议您无限制地授予权限,您应该尝试只使用需要运行的脚本。