如何使用PHP从Web浏览器打开外部GUI应用程序?

时间:2017-10-02 04:59:57

标签: php linux apache qt web-applications

我是网络开发的新手。我正在尝试使用PHP的connection conec = new connection(); SqlDataAdapter sqlDataAdapter ; SqlCommandBuilder sqlCommandBuilder ; DataSet ds; private void set_data_Click(object sender, EventArgs e) { conec.conopen(); //string query="Select S_ID as 'SYMPTOM NO',SD_ID as 'DISK NO',MED_ID as 'MED NAME',SRO,PNR,SYM as '% SYM',DMD from SYM_DETAIL"; sqlDataAdapter = new SqlDataAdapter("Select SY_DID,S_ID as 'SYMPTOM NO',SD_ID as 'DISK NO',m.med_name as 'MED NAME',SRO,PNR,SYM as '% SYM',DMD from SYM_DETAIL sd"+ "inner join MEDICINE m on sd.MED_ID=m.med_Id where sd.S_ID="+txtbxsymid_update.Text+" and sd.SD_ID="+txtbxdiskid_update.Text+"", conec.con); ds = new System.Data.DataSet(); sqlDataAdapter.Fill(ds, "SYM_DETAIL"); dataGridView1.DataSource = ds.Tables[0]; 执行shell脚本。在脚本内部,我正在尝试调用GUI应用程序(Qt)。当我从终端执行PHP脚本时,应用程序按预期启动。但是当我从浏览器打开它时,出现了一个空的空白页。

我正在使用Ubuntu和运行作为服务的apache2服务器。当我在谷歌搜索时,通过允许apache服务与桌面交互,在Windows环境中解决了类似的问题。

PHP脚本:

shell_exec()

testcmd.sh:

<?php
$log = shell_exec('sh testcmd.sh');
?>

我们非常感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

有点不清楚你在问什么。

如果您希望浏览到某个网站将运行一个PHP脚本,该脚本将打开一个GUI应用程序供客户端进行交互,答案是&#34;您可以&#39; T&#34 ;.原因是设置的工作方式是服务器和客户端在不同的机器上运行,而PHP在服务器机器上运行。因此,客户端永远不会看到正在运行的程序。

以上情况也适用于Windows。您在问题中引用的答案不适用于在与客户端不同的计算机上运行的服务器。

如果出于某种原因,只要服务器和客户端在同一台机器上运行(或者有人在观看服务器的显示器)时,你想要的东西是有效的,那么你需要做相当于Windows的操作答案。

Linux上的图形显示(假设您未运行wayland)正在使用名为X11的协议。为了显示显示,您的GUI程序需要两件事。首先是要知道它需要使用哪个显示器。这是一个名为DISPLAY的环境变量。第二个是实际使用该显示的授权。

因此,为了让您的PHP脚本运行将显示其GUI的GUI应用程序,您需要先执行以下步骤:

  1. DISPLAY变量设置为正确的值(从桌面环境中复制)。
  2. 运行xauth add something,您可以通过在桌面环境中运行xauth list来获取某些内容
  3. 如果你做这两件事(按此顺序),你的GUI应该出现。