PHP shell_exec不适用于gnome

时间:2015-12-03 16:23:03

标签: php bash gnome shell-exec

在终端窗口中运行alert 9会给我一个弹出窗口9

但是,在alert 9中运行shell_exec不会产生任何效果。

我应该注意什么?

提一下:其他命令既不能与GUI交互。我正在使用gnome 3.16.3

更新

我的具体目标是使用gnome环境运行xdotool命令。 (xdotool key ctrl+shift+u

3 个答案:

答案 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");