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

标签 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 之类的内容这样的文件或目录

我还按照指示对/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/

相关文章:

php - 如何删除已弃用的错误

php - 今天的 SQL 查询

java - debian安装netbeans8报错java.lang.NoClassDefFoundError如何解决

ffmpeg - sudo checkinstall - 安装失败

php - 在 PHP 中模拟命名函数参数,好主意还是坏主意?

php - 如何在php中从mysql数据库传递值

linux - 如何在 Linux 上的某个时间运行脚本?

java - 杀死特定的 Java 线程 (Debian)

python - 问题 : Glib-Gobject-warning **: cannot register existing type 'GDKDisplayManager'

python - 无法从 'Beaglebone_Black_Driver' 导入名称 'Adafruit_DHT'