标签:
在树莓派里面使用php来执行已经写的c程序来获取一些硬件信息的,因为要操作GPIO,所以必须采用sudo来执行程序.
但是直接在bash里面执行是没问题的,放到php里面执行就没有任何输入.
自己做了个实现,用最简单的ls命令,直接exec("ls /")就可以获取到数据,但是加了sudo后,exec("sudo ls /")就没有任何输出了.
所以基本可以断定,是php权限的问题.
因为php是依赖于apache来运行的,所以php的权限问题又回到了apache的权限问题.
在树莓派上查看apache的执行用户:
ps auxfww | grep ‘httpd‘
发现是有默认用户pi来执行的,而sudo visudo命令可以看见,pi用户是可以直接使用sudo来执行任何程序而不用输入密码的.这个就奇怪了.
又回首检查了下,逻辑没错啊.但是php始终不行.
于是就直接ps auxfww,看httpd确实是有pi来执行的,但是除了httpd这个进程以外,还有apache的进程.
ps auxfww | grep ‘apache‘
发现执行apache的用户是www-data,还有另外一个nobody
把这2个也通过sudo visudo加到超级用户组里面去,重启apache
竟然可以了.
标签:
原文地址:http://www.cnblogs.com/raspberry/p/5470795.html