Я новичок в веб-разработке. Я пытаюсь выполнить сценарий оболочки, используя PHP shell_exec()
, Внутри скрипта я пытаюсь вызвать приложение с графическим интерфейсом (Qt). Когда я выполнил скрипт PHP из терминала, приложение запустилось, как и ожидалось. Но когда я открыл его из браузера, появилась пустая пустая страница.
Я использую Ubuntu с сервером apache2, работающим как сервис. Когда я искал в Google, аналогичная проблема была решена в среде Windows, позволяя службе apache взаимодействовать с рабочим столом.
PHP скрипт:
<?php
$log = shell_exec('sh testcmd.sh');
?>
testcmd.sh:
./Program1
Любая предоставленная помощь будет высоко оценена.
Несколько непонятно, о чем вы спрашиваете.
Если вы хотите, чтобы при просмотре определенного веб-сайта запускался скрипт PHP, который откроет приложение с графическим интерфейсом для клиент чтобы взаимодействовать, ответ «вы не можете». Причина заключается в том, что способ установки заключается в том, что сервер и клиент работают на разных компьютерах, а ваш PHP работает на сервере. Таким образом, клиент никогда не увидит запущенную программу.
Вышесказанное верно и для Windows. Ответ, который вы цитируете в своем вопросе, не относится к серверу, работающему на другом компьютере, чем клиент.
Если по какой-либо причине вы хотите что-то, что работает только тогда, когда сервер и клиент работают на одном компьютере (или кто-то наблюдает за дисплеем сервера), то вам нужно сделать эквивалент ответа Windows.
Графический дисплей в Linux (при условии, что вы не работаете wayland
) использует протокол под названием X11. Для отображения дисплея вашей программе с графическим интерфейсом нужны две вещи. Первое — это знать, какой дисплей ему нужно использовать. Это поставляется с переменной среды под названием DISPLAY
, Второе — это разрешение на использование этого дисплея.
Таким образом, чтобы ваш PHP-скрипт запускал приложение с графическим интерфейсом, которое будет отображать его графический интерфейс, вам необходимо сначала выполнить следующие шаги:
DISPLAY
переменная к правильному значению (скопируйте из своего рабочего стола).xauth add something
где можно взять что что-то работает xauth list
на вашем рабочем столе.Если вы делаете эти две вещи (в этом порядке), ваш GUI должен появиться.
Других решений пока нет …