Запустите Xdotool на Rasperry PI от имени пользователя www-data

Я использую xdotool на rasperry pi для обновления браузера iceaweasel. Теперь я хочу перезагрузить веб-страницу после загрузки сервера в локальной сети.

Для этого я пишу PHP-скрипт на Raspberry (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 из консоли, обновление работает! Если я запускаю PHP из внешнего браузера, обновление не работает!

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

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

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

Кто-нибудь может мне помочь?


person Markus Hartmann    schedule 28.09.2015    source источник
comment
это потому, что у www-data нет прав на запуск системного инструмента, такого как xdo, на самом деле вы можете попробовать запустить любой другой системный инструмент с помощью этого скрипта, и, скорее всего, он не запустится.   -  person Brij Raj Singh - MSFT    schedule 28.09.2015
comment
и есть ли решение? также, если я запускаю шеллскрипт с помощью sudo, он не работает   -  person Markus Hartmann    schedule 28.09.2015


Ответы (1)


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

ДИСПЛЕЙ =: 0 xhost + локальный: www-данные

В вашем скрипте /refresh.sh

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

В вашем php-файле

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

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

sudo chmod +x refresh.php

Выполните файл php через URL-адрес, и все готово.

person rijotech    schedule 25.02.2017