无法通过apache运行php-gpio并使用带有sudo的exec()

时间:2014-02-06 18:42:23

标签: php debian raspberry-pi raspbian gpio

在运行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 foundNo such file or directory等内容。

我还按照指示添加了/ etc / sudoers。

如果我从命令行运行php triggerMyScript.php,它的工作正常。

1 个答案:

答案 0 :(得分:2)

花了几个小时后,我找到了解决方案。除了php-gpio上的说明之外,我还需要做以下事情:

  • myGpioScript中第一行必须是#!/usr/bin/php而不是#!/usr/bin/env php
  • 我必须在php之后添加-t,如下所示:exec('sudo -t php /usr/bin/php ./myGpioScript');(当您考虑它时这是有道理的,但说明并没有这样说)< / LI>
  • 我不得不将它添加到sudoers文件中:www-data ALL=NOPASSWD: /usr/bin/php - 这样www-data也可以无限制地运行php。实际上没有必要为实际脚本文件指定权限!

任何文件的文件权限都不相关,所以只需将它们保持低位。