在php中使用“xte命令”运行bash文件

时间:2016-02-28 19:17:14

标签: php linux bash

对于我的项目,我需要通过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

1 个答案:

答案 0 :(得分:0)

你遗漏了两件事:

  1. X显示的地址需要使用xte参数传递给-x,或者设置为DISPLAY环境变量。
  2. 需要使用X显示的魔术cookie设置XAUTHORITY环境变量。
  3. This answer提供了更多信息。