在运行 Raspbian 3.10.25 的 Raspberry Pi Model B-Rev2 上,我按照 https://github.com/ronanguilloux/php-gpio 上的说明进行操作来控制引脚。但我简单地无法让它工作。根据说明,这应该是 triggerMyScript.php
中的命令:
exec('sudo -t /usr/bin/php ./myGpioScript');
但是根据 myGpioScript
中的内容,我在 Apache 日志 error.log
中收到错误,显示诸如 command not found
和 No 之类的内容这样的文件或目录
。
我还按照指示对/etc/sudoers 进行了添加。
如果我从命令行运行php triggerMyScript.php
,它工作得很好。
最佳答案
花了几个小时后我找到了解决方案。除了 php-gpio 上的说明之外,我还需要执行以下操作:
- 在
myGpioScript
中,第一行必须是#!/usr/bin/php
而不是#!/usr/bin/env php
> - 我必须在
-t
之后添加php
,如下所示:exec('sudo -t php/usr/bin/php ./myGpioScript') ;
(仔细想想,这是有道理的,但说明并不是这样说的) - 我必须将其添加到 sudoers 文件中:
www-data ALL=NOPASSWD:/usr/bin/php
- 这样 www-data 也可以不受限制地运行 php。实际上没有必要指定实际脚本文件的权限!
任何文件的文件权限也不相关,因此只需将它们保留为低级别即可。
关于php - 无法通过 apache 运行 php-gpio 并使用 exec() 和 sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21611299/