PHP shell_exec 不适用于 gnome

PHP shell_exec won't work with gnome

在终端 window 运行ning alert 9 给我一个弹出窗口说 9

然而,运行ning alert 9shell_exec 中什么也没有给出。


我应该注意什么?

顺便提一下:其他与 GUI 交互的命令都不起作用。我正在使用 gnome 3.16.3


更新

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

我相信 PHP 正在启动一个不知道您的 X11 环境的 shell,您需要设置 $DISPLAY 环境变量。尝试对您的 shell_exec 进行以下修改:

shell_exec("DISPLAY=\":0\" alert 9");

alert 不是标准命令,至少在 RedHatSolarisAIX,所以你必须在你的问题中提到它是专有的 command/program

您的 alert script/program 不考虑刷新标准或文件输出中的文本数据,因此您不能使用管道进行任何重定向 |,或者重定向>,最后,php函数shell_exec()可以捕获任何东西

也许您可以重定向图形数据(我不确定),但通常它由图形服务器使用

alert不是命令,而是notify-send的别名。别名只在交互shell中加载,所以不是测试shel_exec的最佳选择。

这 2 个命令与 php-cli 配合使用效果很好:

$ php -r "shell_exec('notify-send 9');"
$ php -r "shell_exec('xdotool key ctrl+shift+u');"

第一个弹出通知区9,最后一个输出下划线'u'。

Apache mod_php 是一个守护进程,init 的子进程,它对 xserver 一无所知。例如,如果您 运行 php 从终端 xserver 中 $ php -S 0:8080 内置 Web 服务器,它会按预期工作。