微世界

树莓派php网页控制gpio

http://www.anenv.com/jiaocheng/raspberry/679.html

根据以上文字配置好一键控制脚本,以便下面用网页控制。

本人对于php了解比较多,所以网页控制第一选择就是php,搜了一下,php控制shell有几条命名都可以,所以就选定php了,首先就是配置php环境,这里不做介绍,网上搜下就有,不懂的话可以留言。

先说一下php控制shell几条命令。PHP提供共了3个专门的执行外部命令的函数:system(),exec(),shell_exec(),passthru()。

system()

原型:string system (string command [, int return_var])

system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果。第二个参数是可选的,用来得到命令执行后的状态码。

例子:

system("/bin/ls -l");

exec()

原型:string exec (string command [, string array [, int return_var]])

exec() 函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二个参数时,才可以用第三个参数,用来取得命令执行的状态码。还是shell_exec()。

例子:

exec("/bin/ls -l");
exec("/bin/ls -l", $res);
#$res是一个数据,每个元素代表结果的一行
exec("/bin/ls -l", $res, $rc);
#$rc的值是命令/bin/ls -l的状态码。成功的情况下通常是0

passthru()

原型:void passthru (string command [, int return_var])

passthru() 只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出设备上。所以passthru()函数经常用来调用象pbmplus(Unix 下的一个处理图片的工具,输出二进制的原始图片的流)这样的程序。同样它也可以得到命令执行的状态码。

例子:

header("Content-type: image/gif");
passthru("./ppmtogif hunte.ppm");

下面说下控制命令,php内输入下面命令就可以执行控制,但是为了方便,不能固定,需要可以随意控制端口,就需要修改一下命令。

system('/usr/bin/sudo /bin/gpiokz 6 0');

但是直接这样是不行的,系统限制了一些,需要改一下权限,首先需要编辑的文件是 /etc/sudoers 在最下面添加当前用户组,我这用的lnmp运行用户组是www-data,如果是apache默认的是apache,这个需要自己修改了

apache ALL=(ALL) NOPASSWD: ALL    //网站运行用户apache
www-data ALL=(ALL) NOPASSWD: ALL    //网站运行用户www-data

然后给网站目录给予对应的运行用户权限

chown -R www-data.www-data /home/wwwroot/    //网站运行用户www-data
chown -R apache.apache /home/wwwroot/    //网站运行用户apache

下面把写的脚本发布下,大家了解一下,保存为gpiokz.php文件长传到网站目录就行了。然后网页控制就行了。这里只是简单写了几个端口,大家可以根据自己需要改为自己需要的。只是简单写了一下,没有注意样式,需要的自己修改。

QQ截图20160709181334

 

gkpio.php文件下载:gpiokz.php

作者:anenv,如若转载,请注明出处:https://www.anenv.com/698.html

发表评论 抢沙发

返回顶部