bash — PHP shell_exec не будет работать с gnome

В окне терминала работает alert 9 дает мне всплывающее высказывание 9

Тем не менее, работает alert 9 в shell_exec ничего не дает


Что я должен знать?

Просто чтобы упомянуть: другие команды не работают ни те, которые взаимодействуют с GUI. Я использую GNOME 3.16.3


ОБНОВИТЬ

Моя конкретная цель — запустить xdotool Команда с использованием среды GNOME. ( xdotool key ctrl+shift+u )

1

Решение

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 это работает как ожидалось.

2

Другие решения

alert не является стандартной командой, по крайней мере, на Красная шляпа, Solaris а также AIX, так что вы должны упомянуть в своем вопросе, что это проприетарная команда / программа

Ваш alert скрипт / программа не учитывает очистку текстовых данных в стандартном или файловом выводе, поэтому вы не можете выполнять перенаправление, используя pipe |, или перенаправить >, и, наконец, функция PHP shell_exec() может поймать что угодно

Может быть, вы можете перенаправить графические данные (я не уверен), но, как правило, они используются графическим сервером

2

Я считаю, что PHP запускает оболочку, которая не знает о вашей среде X11, и вам нужно установить $DISPLAY переменная окружения. Попробуйте следующую модификацию вашего shell_exec:

shell_exec("DISPLAY=\":0\" alert 9");
1
По вопросам рекламы [email protected]