【发布时间】:2021-07-07 10:13:27
【问题描述】:
我想要实现的是通过我的智能手机上的本地网站控制 Raspberry Pi 的 GPIO 引脚。为此,我编译了两个 C 文件,一个将引脚 17 设置为高电平,一个将引脚 17 设置为低电平。在下面的屏幕截图中,您可以看到 C 代码。我可以在终端中执行它们,连接到引脚 17 的 LED 会亮起,所以它可以工作。
但是,当我尝试使用 PHP 中的 shell_exec / system / exec 函数在 Apache2 Web 服务器上通过 PHP 执行(编译的)文件时,它给了我一个分段错误。我将文件所在目录的所有者和/sys/class/gpio 处的 GPIO 文件夹更改为 www-data,这是运行 Apache2 Webserver 的用户。但这也行不通。但是一个 C 程序,它写入与程序可执行文件在同一文件夹中的 txt 文件,可以正常工作。
所以我怀疑问题在于我无法将 /sys/class/gpio 目录分配给 Apache2 用户。但我不知道为什么或者这是否真的是原因。我现在试着让它工作至少 10 个小时,如果有人能帮助我,我会非常高兴!谢谢。
【问题讨论】:
-
请勿张贴文字图片。而是将代码作为格式化文本发布。
-
你永远不会检查任何 IO 函数是否成功。这是一个很大的不可行!您是否有足够的权限来打开这些文件?
-
"所以我怀疑问题是我无法将 /sys/class/gpio 目录分配给 Apache2 用户" 当您尝试检查时会发生什么?谁是该文件夹的所有者,谁是您要打开的文件的所有者?
-
@Gerhardh,感谢您提及,这些文件归根用户所有。如果 sudo chown... 不起作用,我该如何更改?
-
我不是 100% Linux 大师...但根据您的屏幕截图,您只更改了文件夹的所有者。您可能需要添加
-R选项才能递归工作。
标签: php c linux raspberry-pi apache2