[英]xdotool refresh Browser with php or shell
在 Kioskmode 中运行 RPI。
我写了一个 php 脚本,显示乒乓球记分牌,当按下连接到通过 wlan 连接的 D1 Mini 的按钮时,积分计数。
现在我需要刷新浏览器窗口以显示数据库中的实际分数。
我找到了 xdotool ,但我无法让它与 php 脚本中的 shell_exec() 一起工作。
当我在命令行中使用此命令DISPLAY=:0.0 xdotool key F5
时,浏览器刷新工作,但是当我尝试使用 php 脚本进行此操作时,我无法让它工作。
有人可以帮我运行吗?
我尝试了各种版本:
$cmd = shell_exec("DISPLAY=:0 /home/pi/refresh-browser.sh");
$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.