1

我正在从我的拨号计划中调用 AGI SCRIPT 并使用 exec 函数来调用 sh 脚本,但它不起作用。为什么 ?是否可以使用 agi 脚本调用 sh 脚本?

$agi->exec("sh count_length.sh '/SOUND/shakti.gsm'" );
4

1 回答 1

3

看起来你正在使用phpAGI

exec 函数是在调用时“执行”一个 Asterisk 应用程序$agi->exec()。它真的打算用于常规星号应用程序,例如播放您将发出的声音:

$agi->exec("Playback","demo-congrats");

如果要执行系统调用,则从 Asterisk 拨号计划(不是专门通过 AGI)使用该SYSTEM应用程序。通过在星号 CLI 发出来查看它的帮助:

asterisk*CLI> core show application System

但!我认为您真正想要做的是使用 PHP 的内置方法为您的系统提供外壳。您将获得更有限的控制,这可能是最有效的方法。

我通常这样做的方法是使用PHP 手册页中的这个函数system()

function syscall($command){
    if ($proc = popen("($command)2>&1","r")){
        while (!feof($proc)) $result .= fgets($proc, 1000);
        pclose($proc);
        return $result; 
        }
    }

然后你可以这样称呼它:

<?php
  $result = syscall("/path/to/count_length.sh '/SOUND/shakti.gsm'");
?>
于 2013-06-06T18:33:33.460 回答