我正在运行 xubuntu 11.10。从 php,我调用一个 shell,该 shell 导出显示,然后调用 wmctrl。每次调用 wmctrl 时,我都会看到错误“无法打开显示”。
我从 php 调用我的 shell:
$output = shell_exec('/var/www/wmctrl.sh');
我的主机名是 steven-Z-CLASS
这是我的 shell 脚本:
#!/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 无法打开显示吗?
答案1
在steven-Z-CLASS
系统上,您需要运行xhost +OTHERNAME
“OTHERNAME”是运行“wmctrl -m”命令的系统的名称。
该xhost
命令允许用户修改本地 X11 服务器上的安全性,以允许“OTHERNAME”连接并在其上显示图形。
答案2
DISPLAY=steven-Z-CLASS:0.0
方法:
- 屏幕 0(点后)
- 在 X 服务器 0 上(
:
和点之间) - 在主机上
steven-Z-CLASS
steven-Z-CLASS
如果运行 PHP 命令的机器与 X 服务器是同一台机器,请尝试删除:
#!/bin/bash
export DISPLAY=:0.0
echo $DISPLAY
wmctrl -m