【发布时间】:2016-02-10 18:24:44
【问题描述】:
如图所示,我有两台 PC 相互连接
PC1PC2
PC2 运行着 apache2,有两个可执行的 python 程序文件,分别是 python1.py 和 python2.py
我想要创建一个 php 脚本,它会生成一个带有两个按钮 button1 和 button2 的简单网页。当 button1 被点击时,python1.py 应该在 PC2 上执行,如果 button2 被点击而不是 python2.py 所以他们在 PC2 上显示数据并且不向 PC1 发送输出。
我开始创建以下基本脚本,该脚本成功运行“ls”等命令,并成功运行这些命令并在 PC1 上显示结果作为测试,
我有以下问题:
1)如何在PC2上运行命令并在自己的终端上显示数据? 2)我无法执行像'firefox'这样的单个命令,因为它没有给出任何错误但也没有启动firefox..因此我如何执行python文件?
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
上面的工作,但是当我把它修改成下面的 id 不起作用:
<?php
shell_exec('firefox');
?>
或
<?php
shell_exec('/var/www/html/test.sh');
?>
其中 ./test.sh 是可执行的并且具有:
#!/bin/bash
firefox
如果我单独在 bash 脚本之上运行,它会启动 firefox。我希望通过按网页上的按钮远程完成此操作。
我试过这段代码:
<?php
echo exec('/usr/bin/firefox');
?>
它给出了:
root@astitva-Vostro-3446:/var/www/html# ./page1.php
./page1.php: line 2: ?php: No such file or directory
./page1.php: line 3: syntax error near unexpected token `('
./page1.php: line 3: `echo exec('/usr/bin/firefox');'
因为 firefox 是 GUI,所以尝试了以下操作:
<?php
echo exec('/var/www/html/test.sh');
?>
它给出了:
root@astitva-Vostro-3446:/var/www/html# ./page1.php
./page1.php: line 2: ?php: No such file or directory
./page1.php: line 3: syntax error near unexpected token `('
./page1.php: line 3: `echo exec('/var/www/html/test.sh');'
【问题讨论】:
-
尝试包含firefox的路径,例如/etc//firefox
-
带有 GUI 的程序可能无法执行,因为运行 apache 的用户通常没有图形桌面。
-
要在 PC2 上运行命令并在其自己的终端上显示数据,您可以在 python 中创建一个套接字。我不明白你为什么要通过 php 命令启动 firefox。
-
这篇文章可以帮助你 - cyberciti.biz/faq/howto-run-firefox-from-the-command-line,正如@maxhb 提到的,你必须在当前登录的 gui 用户下编写相同的
Firefox午餐命令