从php

时间:2016-08-07 09:36:19

标签: java php linux bash shell

我正在尝试实现类似于此处running console app from php script的要求。但是因为我在这里看不到具体的答案,所以将我的问题重新提交给我的环境。

免责声明:我没有PHP脚本知识,也没有网络技术的常规程序员。到目前为止,我所取得的成就只是通过谷歌搜索。请回答我是初学者。另外还有我对usecase的长描述,但我认为描述我的目标和开发设置非常重要

我有pjsua为Raspberry pi编译的基于命令行的软电话应用程序(请参阅此处的快照http://www.pjsip.org/pjsua.htm)。这是控制台应用程序,在运行后,需要用户输入键盘。示例'm'表示打电话,'q'表示退出等。

我在我的主目录中创建了一个名为'pjsip'的bash shell脚本,它实现了start()/ stop()/ restart()接口,如下所示:

DAEMON="/usr/bin/pjsua"
DEFAULT="/home/pi/pjsip_default"
START="1"

. $DEFAULT "$2"

case "$1" in
start)
    if [ "$START" = "0" ] ; then
        if test -z "$OPTIONS" ; then
            echo "You have to define OPTIONS in $DEFAULT before running pjsip"
        fi
        exit 0
    fi

    echo -n "Starting $DESC: "
    $DAEMON $OPTIONS
    ;;

当我在Raspberry pi上本地运行./pjsip start时,这一切都正常。 pjsip shell脚本在控制台模式下使用命令行参数调用/ usr / bin / pjsua。

接下来,我在Raspberry pi上设置了apache web服务器,并托管了一个用PHP创建的网页,用户可以通过互联网从远程PC访问并输入sip服务器IP详细信息。意图是当用户按下“提交”按钮然后后端软电话应用程序时(可以使用用户传入的详细信息启动/重新启动在服务器上运行的pjsua。

现在这里有点问题:

当用户按下提交按钮时,我正在从PHP页面调用shell脚本'pjsip'(如上所述)来启动我的软电话应用程序,用户使用命令'shell_exec('/ home / pi / pjsip)传递详细信息”,$输出)。我可以从php调用shell脚本,但有两个问题:

1)它将所有控制台输出定向到php页面 - 为此我注释掉了$ echo输出

2)它正在查杀错误“无法从文件重定向切换回控制台” - 这是主要错误。

要解决第二个问题而不是修改代码,想问一下PHP中是否有任何方法可以使用shell脚本独立启动后端应用程序,以便一旦启动,只有当用户有意按下时才会保持活动状态并终止/退出问'通过键盘?即它应该只在控制台模式下运行。

可以通过PHP吗?如果没有,还有其他替代方法可以解决问题吗?

在当前实现中,我的PHP脚本如下所示:

<?php
if($_SERVER["REQUEST_METHOD"] == "POST")
{ $output = shell_exec('/home/pi/pjsip start');
      exit();
     }
?>
<html>
   <body>
      <form action = "<?php $_PHP_SELF ?>" method = "POST">
         Name: <input type = "text" name = "IP" /><br/>
          <input type = "submit" />
      </form>

   </body>
</html>

我在谷歌上提到了很多链接,包括这里给出的各种选项:php execute a background process。但没有任何帮助我。我坚持这个问题。请帮助我提供宝贵的意见。如果通过其他一些方法示例java脚本更好的可行,请建议我。

0 个答案:

没有答案