Exec函数在AGI脚本中不起作用:

时间:2013-06-06 12:19:48

标签: asterisk

我从拨号方案调用AGI SCRIPT并使用exec函数调用sh脚本但它无效。为什么?是否可以使用agi脚本调用sh脚本?

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

1 个答案:

答案 0 :(得分:3)

看起来您正在使用phpAGI

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

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

如果要执行系统调用,请使用Asterisk拨号方案(不是专门通过AGI),使用SYSTEM应用程序。通过星号CLI发布,查看有关它的帮助:

asterisk*CLI> core show application System

但是!我认为你真正要做的就是使用PHP的内置方法来实现你的系统。你将获得更多的有限控制,它可能是最有效的方法。

我通常这样做的方法是使用the PHP manual page for 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'");
?>