PHP shell_exec не будет работать с gnome
В окне терминала работает alert 9
дает мне всплывающее высказывание 9
Тем не менее, работает alert 9
в shell_exec
ничего не дает
Что я должен знать?
Просто чтобы упомянуть: другие команды не работают ни те, которые взаимодействуют с GUI. Я использую GNOME 3.16.3
ОБНОВИТЬ
Моя конкретная цель - запустить команду xdotool с использованием среды gnome. (xdotool key ctrl+shift+u
)
3 ответа
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
это не стандартная команда, по крайней мере, в RedHat, Solaris и AIX, поэтому вы должны указать это в своем вопросе, что это проприетарная команда / программа
Ваш alert
Скрипт / программа не учитывает очистку текстовых данных в стандартном или файловом выводе, поэтому вы не можете выполнять перенаправление с помощью pipe | или перенаправить > и, наконец, функцию php shell_exec()
может поймать что угодно
Может быть, вы можете перенаправить графические данные (я не уверен), но, как правило, они используются графическим сервером
Я считаю, что PHP запускает оболочку, которая не знает о вашей среде X11, и вам нужно установить $DISPLAY
переменная окружения. Попробуйте следующую модификацию вашего shell_exec:
shell_exec("DISPLAY=\":0\" alert 9");