以树莓派为核心的一个可以通过访问公网域名查看实时监测数据的测温仪。
通过nginx将编辑好作为在线仪表盘的php网页发送至localhost:80端口,同时使用内网穿透与域名映射将端口转发至公网。
项目的重点是在php中实现对树莓派的命令操作,也就是通过php操作树莓派gpio,通过php运行python程序等。
问题描述
使用shell_exec()函数,命令树莓派执行python程序,获取其字符串类型的返回值,并赋值给将要在网页上显示的变量:
环境温度

以树莓派为核心的一个可以通过访问公网域名查看实时监测数据的测温仪。
通过nginx将编辑好作为在线仪表盘的php网页发送至localhost:80端口,同时使用内网穿透与域名映射将端口转发至公网。
项目的重点是在php中实现对树莓派的命令操作,也就是通过php操作树莓派gpio,通过php运行python程序等。
使用shell_exec()函数,命令树莓派执行python程序,获取其字符串类型的返回值,并赋值给将要在网页上显示的变量:
环境温度
但测试发现,网页没有按照预期一般地显示数据。显然,shell_exce()并未起到作用。
将shell_exce()函数更换为system()函数、exce()函数,均为无显示。
初步推测是nginx权限不够,无法在php中调用涉及gpio操作的python脚本。
使用网传较广的两个方法给nginx加权限:
1、添加www-data用户的root权限:
2、将网页根目录设为777读写权限:
执行以上步骤后仍未能解决问题。
既然直接调用python脚本不起作用,那就隔山打牛,利用sh运行py文件。
新建sh文件,分别命名为dataread1.sh与dataread2.sh:
sudo python dataread1.py
sudo python dataread2.py
并将php部分修改为:
经测试,网页可正常显示数据。
由于root权限,该方法限仅出站流量使用。