我正在使用Archlinux,我想运行以下脚本(实际上是最后一行):
<?php
var_dump(get_current_user());
var_dump(exec("whoami"));
var_dump(exec("sudo echo 1 > /sys/class/gpio/gpio44/value"));
该脚本具有以下权限(我在最后一行尝试过使用和不使用sudo)
-rwxr-xr-x 1 http http 126 Nov 17 17:24 turn_on.php
已使用所有权限将和http
添加到\etc\sudoers
http ALL=(ALL) ALL
在浏览器中打开turn_on.php
脚本的结果是:
string(4) "http" string(4) "http" string(0) ""
每次我重新加载浏览器时,脚本都没有按照预期(最后一行)和apache日志执行操作:
sh: /sys/class/gpio/gpio44/value: Permission denied
这是我第一次尝试处理我想做的事情,我正在考虑制作更多的东西&#34; PHP Web服务API风格&#34;。任何建议都非常感谢。 干杯.-
答案 0 :(得分:1)
您需要检查/ sys / class / gpio / gpio44 / value的权限,因为这是产生权限错误的原因。
另外,尝试使用命令行中的sudo来模仿脚本的功能:
sudo -u http echo 1 > /sys/class/gpio/gpio44/value
如果此操作失败,那么您只需修改权限,直到它正常工作,然后再从浏览器重试。
如果上述方法有效但在浏览器中仍然失败,那么您的脚本执行可能实际上并未使用http用户。