Я использую xubuntu 11.10. Из php я вызываю оболочку, которая экспортирует отображение, а затем вызывает wmctrl. Каждый раз, когда я вызываю wmctrl, я вижу ошибку «Не удается открыть дисплей».
Я вызываю свою оболочку с php:
$output = shell_exec('/var/www/wmctrl.sh');
Моим именем хоста является steven-Z-CLASS
Вот мой скрипт:
#!/bin/bash
export DISPLAY=steven-Z-CLASS:0.0
echo $DISPLAY
wmctrl -m
Когда я запустите это, я вижу отображаемое значение на моей странице php:
steven-Z-CLASS:0.0
Однако wmctl не запускается. Я вижу эту ошибку в журнале apache:
Cannot open display.
Есть идеи, почему wmctrl не может открыть дисплей?
В системе steven-Z-CLASS
вам нужно запустить xhost +OTHERNAME
, где «OTHERNAME» - это имя системы, в которой выполняется команда «wmctrl -m».
Команда xhost
позволяет пользователю изменять защиту на локальном сервере X11, чтобы позволить «OTHERNAME» подключаться и отображать графику на нем.
DISPLAY=steven-Z-CLASS:0.0
означает:
:
и точкой) steven-Z-CLASS
Попробуйте удалить steven-Z-CLASS
, если машина, выполняющая команду PHP, совпадает с машиной X-сервера:
#!/bin/bash
export DISPLAY=:0.0
echo $DISPLAY
wmctrl -m