В окне терминала работает alert 9
дает мне всплывающее высказывание 9
Тем не менее, работает alert 9
в shell_exec
ничего не дает
Что я должен знать?
Просто чтобы упомянуть: другие команды не работают ни те, которые взаимодействуют с GUI. Я использую 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
это работает как ожидалось.
alert
не является стандартной командой, по крайней мере, на Красная шляпа, Solaris а также AIX, так что вы должны упомянуть в своем вопросе, что это проприетарная команда / программа
Ваш alert
скрипт / программа не учитывает очистку текстовых данных в стандартном или файловом выводе, поэтому вы не можете выполнять перенаправление, используя pipe |, или перенаправить >, и, наконец, функция PHP shell_exec()
может поймать что угодно
Может быть, вы можете перенаправить графические данные (я не уверен), но, как правило, они используются графическим сервером
Я считаю, что PHP запускает оболочку, которая не знает о вашей среде X11, и вам нужно установить $DISPLAY
переменная окружения. Попробуйте следующую модификацию вашего shell_exec:
shell_exec("DISPLAY=\":0\" alert 9");