繁体   English   中英

xdotool 使用 php 或 shell 刷新浏览器

[英]xdotool refresh Browser with php or shell

在 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'");

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

问题是浏览器使用用户www-data运行 php 脚本,该用户无权访问 X window 系统。 要查看正在运行脚本的用户,请添加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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM