全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

php读取gpio状态怎么弄_php获取树莓派gpio引脚电平【方法】

PHP无法直接操作树莓派GPIO,需通过sysfs文件系统(如file_get_contents读取/sys/class/gpio/gpio17/value)或gpio命令行工具(依赖已弃用的WiringPi),但均存在权限、性能与维护性问题;推荐用C/Python编写独立采集服务并提供API供PHP调用。

PHP 本身没有内置 GPIO 操作能力,不能直接读取树莓派的 GPIO 引脚电平。必须借助系统层工具(如 sysfs 接口)或外部命令桥接,且需确保权限和内核支持。

sysfs + file_get_contents() 读取 GPIO 状态(最轻量)

树莓派 Linux 内核默认启用 sysfs GPIO 接口(路径为 /sys/class/gpio/),PHP 可以通过文件读写操作获取电平值。前提是该引脚已导出并设为输入模式。

  • 先在 shell 中手动导出并配置引脚(例如 GPIO 17):
    echo 17 > /sys/class/gpio/export
    echo in > /sys/class/gpio/gpio17/direction
  • PHP 中读取电平只需:
    $value = (int) file_get_contents('/sys/class/gpio/gpio17/value');
    返回 01,对应低电平/高电平
  • 注意:PHP 进程必须有读取 /sys/class/gpio/gpio*/value 的权限(通常需加入 gpio 用户组,或用 sudo 启动 Web 服务 —— 不推荐)
  • 不支持实时中断或边沿触发,仅适合轮询式低频检测(如按钮状态、开关信号)

调用 gpio 命令行工具(兼容性更好,但依赖 WiringPi 已弃用)

老项目可能还在用 wiringpi 提供的 gpio 命令,它封装了底层操作,对 PHP 更友好,但 WiringPi 自 2019 年起不再维护,且新版 Raspberry Pi OS(基于 Debian 11+)默认不预装。

  • 安装(仅限旧系统):
    sudo apt install wiringpi
  • PHP 中执行:
    $level = (int) trim(shell_exec('gpio -g read 17'));
    其中 -g 表示使用 Broadcom GPIO 编号(即 BCM 编号),17 是引脚号
  • 若返回空或报错 command not found,说明未安装或架构不兼容(如 ARM64 系统上部分二进制不可用)
  • 该方式会 fork 新进程,频繁调用有性能开销,不适合高频采样(>10Hz)

pcntl_fork() + exec() 避免 Web 服务器阻塞(慎用)

如果 PHP 运行在 Apache/Nginx + PHP-FPM 下,直接读 /sys/class/gpio/ 一般不会阻塞;但若你尝试用 exec() 调用带延迟的命令(如 gpio readall),可能引发超时或子进程残留。

  • 避免在响应中执行耗时 GPIO 操作:不要在 HTTP 请求里循环读取多个引脚并 sleep
  • 若需后台监听,应另起守护进程(如用 Python + RPi.GPIOlibgpiod),PHP 只负责读取其输出文件或 socket
  • pcntl_fork() 在 PHP-FPM 中默认禁用,且 fork 出的子进程脱离请求生命周期后易成僵尸进程,不建议用于 GPIO 监听

真正稳定的做法是:用 C/Python 写一个常驻的 GPIO 采集服务(推荐 libgpiod,取代已废弃的 sysfs 接口),暴露 HTTP API 或本地 socket;PHP 只做请求和解析。否则,硬用 PHP 直接碰硬件,权限、竞态、可维护性全是坑。


# php  # linux  # python  # apache  # nginx  # 工具 


相关文章: 如何构建满足综合性能需求的优质建站方案?  *服务器网站为何频现安全漏洞?  如何高效配置香港服务器实现快速建站?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  如何在IIS管理器中快速创建并配置网站?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  宁波自助建站系统如何快速打造专业企业网站?  如何登录建站主机?访问步骤全解析  制作国外网站的软件,国外有哪些比较优质的网站推荐?  宁波免费建站如何选择可靠模板与平台?  广州营销型建站服务商推荐:技术优势与SEO优化解析  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  如何高效利用200m空间完成建站?  北京企业网站设计制作公司,北京铁路集团官方网站?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  专业商城网站制作公司有哪些,pi商城官网是哪个?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  如何在搬瓦工VPS快速搭建网站?  开封网站制作公司,网络用语开封是什么意思?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  如何做静态网页,sublimetext3.0制作静态网页?  建站主机服务器选购指南:轻量应用与VPS配置解析  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  网站制作员失业,怎样查看自己网站的注册者?  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何在新浪SAE免费搭建个人博客?  已有域名能否直接搭建网站?  自助网站制作软件,个人如何自助建网站?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  如何确认建站备案号应放置的具体位置?  详解jQuery停止动画——stop()方法的使用  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  如何获取免费开源的自助建站系统源码?  linux top下的 minerd 木马清除方法  临沂网站制作企业,临沂第三中学官方网站?  高防服务器如何保障网站安全无虞?  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何通过多用户协作模板快速搭建高效企业网站?  公司网站设计制作厂家,怎么创建自己的一个网站?  python的本地网站制作,如何创建本地站点?  如何在Windows 2008云服务器安全搭建网站?  c# await 一个已经完成的Task会发生什么  建站之星如何开启自定义404页面避免用户流失? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。