簡體   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