【问题标题】:Linux execute C Executable from PHP via Apache Webserver [closed]Linux通过Apache Webserver从PHP执行C可执行文件[关闭]
【发布时间】: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


【解决方案1】:

我无法更深入地调试或检查您的系统,但我可以告诉您我是如何在类似的嵌入式系统上解决相同问题的。

我实现了一个 C++ 守护程序监听 TCP 套接字(出于安全原因仅绑定到 localhost),以 root 权限运行,并接受命令来管理硬件外围设备。

设备公开了一个 PHP UI,它通过 TCP 套接字管理硬件。

我希望它也能成为你的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 2013-01-14
    • 2016-01-20
    • 2014-06-11
    • 2012-07-20
    相关资源
    最近更新 更多