2015-09-28 5 views
0

Я использую xdotool на rasperry pi, чтобы обновить браузер для браузера. Теперь я хочу перезагрузить веб-страницу после загрузки сервера в локальной сети.Запустить Xdotool на Rasperry PI как пользователь «www-data»

Для этого я пишу PHP скрипт на малина (refresh.php):

<?php 
exec("sh /var/www/refresh.sh"); 
?> 

resfresh.sh

export DISPLAY=:"0.0" 
XAUTHORITY=/home/pi/.Xauthority 
xdotool getactivewindow 
xdotool key F5 

Если я запускаю скрипт из консоли, то обновление работает! Если я запускаю PHP из внешнего браузера, обновление не работает!

Это Apache ошибок журнала:

No protocol specified 
Error: Can't open display: (null) 
Failed creating new xdo instance 

Я думаю, что есть проблема с xdotool и WWW-данных пользователя.

Может ли кто-нибудь мне помочь?

+0

его, поскольку www-data не имеет прав на выполнение системного инструмента, такого как xdo, infact, вы можете попробовать любой другой системный инструмент для запуска этим скриптом и, скорее всего, он не будет работать. –

+0

и есть ли какое-нибудь решение? также, если я запустил shellscript с sudo, он не работает –

ответ

0

Добавить разрешение WWW-данных для выполнения системных инструментов

DISPLAY =: 0 Xhost + местные: WWW-данные

На ваш сценарий /refresh.sh

#!/bin/bash 
export DISPLAY=:0 && xdotool key F5 

На РНР файл

<?php 
shell_exec("/refresh.sh " . $phone); 
?> 

затем добавьте разрешение на выполнение для вашего php файл

sudo chmod +x refresh.php 

Выполнение php-файла по URL-адресу и вашему правильному пути.