Запуск приложения X с локально работающего веб-сервера Apache с использованием PHP - PullRequest
2 голосов
/ 01 марта 2010

У меня есть Apache и PHP на моем локальном рабочем столе Linux. Мой PHP-скрипт запускает "xcalc" и выглядит так:

<?php
    shell_exec("xcalc");
?>

Когда я выполняю сценарий PHP с использованием двоичного файла PHP, я вижу, что xcalc работает на рабочем столе. Когда я выполняю тот же сценарий через Apache, на экране ничего не происходит. Я не могу понять, где это терпит неудачу.

Я изменил пользователя и группу Apache на обычного пользователя, просто чтобы убедиться, что все настройки X верны.

1 Ответ

3 голосов
/ 01 марта 2010

xcalc требуется либо опция -display, либо переменная окружения DISPLAY, в которой указано, какой X-сервер отображать. Когда вы запускаете его из оболочки, он, вероятно, получает $DISPLAY из вашей оболочки, но веб-сервер Apache обычно не имеет этого установлен.

Вы также можете столкнуться с проблемами аутентификации X, если сеанс X не запускается тем же пользователем, что и веб-сервер Apache, поскольку X обычно полагается на общий секрет («магический файл cookie»), хранящийся в $HOME/.xauthority файл пользователя, который вошел в сессию X.

...