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


running bash file with "xte command" in php

对于我的项目,我需要通过php运行位于ubuntu服务器上的bash脚本。

这是我的脚本: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'

注意:请记住,首先检查用户的显示,因为不同的用户将获得不同的显示。您可以在终端中通过此命令检查您的用户显示

who

你错过了两件事:

  1. X 显示器的地址需要使用 -x 参数传递给xte,或者设置为DISPLAY环境变量。
  2. XAUTHORITY环境变量需要使用 X 显示器的魔术 cookie 进行设置。

这个答案有更多的信息。