对于我的项目,我需要通过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
答案 0 :(得分:0)
你遗漏了两件事:
xte
参数传递给-x
,或者设置为DISPLAY
环境变量。XAUTHORITY
环境变量。This answer提供了更多信息。