PHP exec,运行shell命令问题(使用archlinux)

时间:2014-11-17 17:53:06

标签: php apache shell exec archlinux

我正在使用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;。任何建议都非常感谢。 干杯.-

1 个答案:

答案 0 :(得分:1)

您需要检查/ sys / class / gpio / gpio44 / value的权限,因为这是产生权限错误的原因。

另外,尝试使用命令行中的sudo来模仿脚本的功能:

sudo -u http echo 1 > /sys/class/gpio/gpio44/value

如果此操作失败,那么您只需修改权限,直到它正常工作,然后再从浏览器重试。

如果上述方法有效但在浏览器中仍然失败,那么您的脚本执行可能实际上并未使用http用户。