我想在我的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。
我如何解决它。对不起我的英文......
答案 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。