我从拨号方案调用AGI SCRIPT并使用exec函数调用sh脚本但它无效。为什么?是否可以使用agi脚本调用sh脚本?
$agi->exec("sh count_length.sh '/SOUND/shakti.gsm'" );
答案 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'");
?>