【问题标题】:xdotool refresh Browser with php or shellxdotool 使用 php 或 shell 刷新浏览器
【发布时间】:2020-09-26 13:12:54
【问题描述】:

在 Kioskmode 中运行 RPI。

我写了一个 php 脚本来显示乒乓球记分牌,当按下连接到通过 wlan 连接的 D1 Mini 的按钮时,分数会增加。

现在我需要刷新浏览器窗口以显示数据库中的实际分数。

我找到了 xdotool,但我无法让它与 php 脚本中的 shell_exec() 一起工作。

当我在命令行中使用此命令DISPLAY=:0.0 xdotool key F5 时,浏览器刷新工作,但是当我尝试从 php 脚本中执行此操作时,我无法让它工作。

有人可以帮我运行吗?

我尝试了各种版本:

  1. $cmd = shell_exec("DISPLAY=:0 /home/pi/refresh-browser.sh");

  2. $cmd = shell_exec("sudo pi 'DISPLAY=:0.0 xdotool key F5'");

【问题讨论】:

    标签: php browser sh refresh xdotool


    【解决方案1】:

    TLDR:运行xhost si:localuser:www-data

    问题是浏览器以用户www-data 运行php 脚本,该用户无权访问X 窗口系统。 要查看运行脚本的用户,请将echo shell_exec("whoami"); 添加到您的脚本中。

    您还可以以www-data 用户身份从命令行运行脚本,以查看浏览器中可能未显示的任何错误,例如:sudo -u www-data php your_script_filename.php 你可以运行xhost查看访问控制状态和授权用户,xhost +禁用它(不推荐,它完全停用身份验证并允许每个人访问你屏幕上的所有应用程序),xhost -(重新)启用访问控制

    解决方案:www-data 用户添加到 X 服务器的授权访问列表中:

    xhost si:localuser:www-data
    

    测试:

    pi@raspberrypi:/var/www/html $ export DISPLAY=:0
    pi@raspberrypi:/var/www/html $ xhost
    access control enabled, only authorized clients can connect
    SI:localuser:pi
    pi@raspberrypi:/var/www/html $ sudo -u www-data xdotool  getactivewindow
    No protocol specified
    Error: Can\'t open display: (null)
    Failed creating new xdo instance
    pi@raspberrypi:/var/www/html $ xhost si:localuser:www-data
    localuser:www-data being added to access control list
    pi@raspberrypi:/var/www/html $ xhost
    access control enabled, only authorized clients can connect
    SI:localuser:www-data
    SI:localuser:pi
    pi@raspberrypi:/var/www/html $ sudo -u www-data xdotool  getactivewindow
    20971521
    

    【讨论】:

    • 嗨,我没有收到消息说我收到了对此的回复 :)
    猜你喜欢
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 2021-06-18
    • 2014-08-10
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多