无法使用php通过apache2执行bash脚本和程序?

时间:2016-02-10 18:24:44

标签: php python bash apache

我有两台PC互相连接,如图所示

PC1< ==============> PC2

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');'

1 个答案:

答案 0 :(得分:0)

您没有将page1.php作为PHP脚本执行。如果没有shebang行(例如#!/usr/bin/env bash),则无法正确解释脚本。您正在接收的错误正在出现,因为bash正在尝试解释您的文件,而不是PHP。您有两种选择:

  1. 在脚本的开头添加一个shebang行:#!/usr/bin/env php
  2. 使用PHP cli:php ./page1.php
  3. 执行文件

    如果您还要通过apache,nginx等使用脚本,我建议#2。否则#1更有意义。