EXEC()在php,cec-client raspberry中

时间:2014-02-20 21:59:38

标签: php path exec raspberry-pi

我想在我的RPI上用php发出一个命令。

命令是echo 'standby 0' | cec-client -s,它在ssh我的Tv关机中工作正常,但在php echo shell_exec("......")返回适配器自动检测FAILED ...但是mkdir也不适用于sheel_exec,所以我认为它是可能是PATH问题,但我不知道如何解决它。我在ssh中的PATH是/ usr / local / bin .......在php中是/ sbin:/ bin:/ usr / sbin:/ usr / bin。

我如何解决它。对不起我的英文......

2 个答案:

答案 0 :(得分:1)

我尝试了同样的操作,并收到一条消息,提示“无法打开vchiq实例”。我发现有一个question on Raspberry Pi StackExchange建议将用户添加到“视频”组中。我使用usermod -a -G video www-data进行了此操作,然后使用/etc/init.d/apache2 restart重新启动了apache。然后我就可以使用PHP和apache的cec-client。

答案 1 :(得分:0)

这是权限问题。在通过ssh运行命令时,你以pi(可能)的身份执行它,但是通过shell_exec你可以执行命令作为用户www-data,它没有必要的权限。你可以通过运行echo shell_exec来检查这个问题(" whoami"); 您可以通过添加行" www-data ALL =(ALL)NOPASSWD:ALL"轻松解决此问题。进入你的" / etc / sudoers"文件,然后运行" echo shell_exec(" sudo echo' standby 0' | sudo cec-client -s");",hovewer这将添加给用户www-data所有的​​sudo权限,它是非常不安全的,但它会工作。如果您想以更安全的方式执行此操作,则需要找到正确运行所需的cec-client权限,然后将其添加到用户www-data。