对于我的项目,我需要通过 php 运行位于 ubuntu 服务器上的 bash 脚本。
这是我的 sh 脚本:test1.sh
#!/bin/bash
xte 'keydown Control_L' 'keydown Alt_L' 'key l' 'keyup Alt_L' 'keyup Control_L'
我的 php 文件是:bashTest1.php
<?php
$message = shell_exec("bash test1.sh 2>&1");
echo $message;
?>
但是当我在浏览器中打开 php 页面时,我得到这个错误:
Unable to open display 'default'
“test1.sh”中的“xte”命令基本上执行 Ctlr+Alt+L 虚拟操作。 我已经检查了“test1.sh”的文件权限。没关系。我已经在它正在运行的终端中运行了 bash 文件。 我还在同一个“test1.sh”文件中检查了“ls”命令,它在我的浏览器中显示了该目录中的所有文件。 你能帮我在我的 php 脚本中运行这个命令吗?
提前谢谢大家!
我终于解决了这个问题。在 Ubuntu 中,每个用户都有一个 DISPLAY。在我的 bash 文件中,我首先必须指定我需要在哪个 DISPLAY 上执行命令。最后我需要授予 php 用户执行命令的权限。最后我的 bash 文件看起来像这样:
#!/bin/bash
export DISPLAY=":0"
xhost +
xte 'keydown Control_L' 'keydown Alt_L' 'key l' 'keyup Alt_L' 'keyup Control_L'
注意:请记住先检查用户的显示器。因为不同的用户会得到不同的 DISPLAYS。您可以在终端中通过此命令检查您的用户显示
who
最佳答案
你错过了两件事:
- X 显示的地址需要通过
-x
参数传递给xte
,或者设置为DISPLAY
环境变量. XAUTHORITY
环境变量需要使用您的 X 显示器的魔术 cookie 进行设置。
This answer有更多信息。
关于php - 在 php 中运行带有 "xte command"的 bash 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687082/