簡體   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