繁体   English   中英

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

[英]running bash file with “xte command” in php

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

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

who

您缺少2件事:

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

此答案有更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM