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");
Другие вопросы по тегам