В окне терминала, в котором alert 9
, появляется всплывающее сообщение 9
Однако запуск alert 9
в shell_exec
ничего не дает.
Что я должен знать?
Просто упомянем: другие команды не работают, не взаимодействуя с графическим интерфейсом. Я использую gnome 3.16.3
ОБНОВИТЬ
Моя конкретная цель - запустить команду xdotool с помощью среды gnome. (xdotool key ctrl+shift+u
)
alert
- это не команда, а псевдоним для notify-Send
. Псевдонимы загружаются только в интерактивной оболочке, поэтому лучше не тестировать shel_exec
.
Эти 2 команды хорошо работают с php-cli:
$ php -r "shell_exec('notify-send 9');"
$ php -r "shell_exec('xdotool key ctrl+shift+u');"
Первый выдает 9 в области уведомлений, а последний вывод подчеркивает "u".
Apache с mod_php - это демон, подпроцесс init
, который ничего не знает о xserver. Если, например, вы запустили встроенный веб-сервер php с терминала в xserver, например $ php -S 0:8080
он работает так, как ожидалось.
init
, который ничего не знает о xserver. Например, если вы запустили встроенный веб-сервер php из терминала в xserver, например, $ php -S 0:8080
он будет работать так, как ожидается.
alert
не является стандартной командой, по крайней мере, на RedHat, Solaris и AIX, поэтому вы должны упомянуть об этом в своем вопросе о том, что это проприетарная команда/программа
Ваш скрипт/программа alert
учитывает сброс текстовых данных в стандартном или выходном файле, поэтому вы не можете выполнять перенаправление с использованием pipe | , или перенаправить >, и, наконец, php-функция shell_exec()
может поймать что-либо
Возможно, вы можете перенаправить графические данные (я не уверен), но, как правило, он используется графическим сервером
Я считаю, что PHP запускает оболочку, которая не знает об окружающей среде X11, и вам нужно установить переменную среды $DISPLAY
. Попробуйте выполнить следующую модификацию shell_exec:
shell_exec("DISPLAY=\":0\" alert 9");
xauth
чтобы авторизовать других пользователей и хосты, но это может быть очень xauth
. Вы получаете какие-либо ошибки, возвращенные из shell_exec?
$DISPLAY
.$DISPLAY
- извините