【问题标题】:EXEC() in php, cec-client raspberryphp 中的 EXEC(),cec-client 覆盆子
【发布时间】:2019-01-23 17:39:38
【问题描述】:

我想通过我的 RPI 在 php 中启动一个命令。

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

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

【问题讨论】:

    标签: php path exec raspberry-pi


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这是权限问题。通过 ssh 运行命令时,您以用户 pi 的身份执行它(可能),但通过 shell_exec,您以用户 www-data 的身份执行命令,该用户没有必要的权限。您可以通过运行 echo shell_exec("whoami"); 来检查这一点。 您可以通过在“/etc/sudoers”文件中添加行“www-data ALL=(ALL) NOPASSWD: ALL”然后运行“echo shell_exec("sudo echo 'standby 0' | sudo cec-client - s");",但是这将向用户 www-data 添加所有 sudo 权限,并且非常不安全,但它会起作用。如果您想以更安全的方式执行此操作,则需要找到 cec-client 正常运行所需的权限,然后将它们添加到用户 www-data。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-25
        • 2018-05-31
        • 1970-01-01
        • 2015-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多