在终端窗口中运行alert 9
会给我一个弹出窗口9
但是,在alert 9
中运行shell_exec
不会产生任何效果。
我应该注意什么?
提一下:其他命令既不能与GUI交互。我正在使用gnome 3.16.3
更新
我的具体目标是使用gnome环境运行xdotool命令。 (xdotool key ctrl+shift+u
)
答案 0 :(得分:2)
alert
不是标准命令,至少在 RedHat , Solaris 和 AIX 上,所以你必须提到它在你的问题中,它是一个专有命令/程序
您的alert
脚本/程序不考虑在标准或文件输出中刷新文本数据,因此您无法使用管道 | 进行任何重定向,或重定向 > ,最后,php函数shell_exec()
可以捕获任何内容
也许你可以重定向图形数据(我不确定),但一般情况下,图形服务器使用它
答案 1 :(得分:2)
alert
不是命令,而是notify-send
的别名。别名仅在交互式shell中加载,因此它不是测试shel_exec
的最佳选择。
这两个命令适用于php-cli:
$ php -r "shell_exec('notify-send 9');"
$ php -r "shell_exec('xdotool key ctrl+shift+u');"
第一个弹出通知区域中的9,最后一个输出强调了' u'。
带有mod_php的Apache是一个守护进程,init
的子进程,它对xserver一无所知。例如,如果您从 xserver(例如$ php -S 0:8080
)中运行php内置Web服务器,它将按预期工作。
答案 2 :(得分:1)
我相信PHP正在启动一个不了解您的X11环境的shell,您需要设置$DISPLAY
环境变量。尝试对shell_exec进行以下修改:
shell_exec("DISPLAY=\":0\" alert 9");