我尝试用星号监听电话。
如果我想监听事件,我必须使用此命令启动服务,并将bash文件存储在/etc/rc.d/init.d/asterisk_ipu_gui.bash
service asterisk_ipu_gui start
我登录Asterisk CLI,并使用这些命令检查状态
asterisk -vvvr
manager show connected
如果它的IP地址为127.0.0.0 --->开始服务成功。
这是手动的,现在我想用PHP执行那个shell脚本。请告诉我怎样才能做到这一点?感谢
我这样编写代码,但不影响。
<?php
$output1 = shell_exec('service asterisk_ipu_gui start');
$output2 = shell_exec('asterisk -vvvr');
$output3 = shell_exec('manager show connected');
echo "<pre>$output3</pre>";
?>
答案 0 :(得分:0)
你应该在每个命令后放置回声
<?php
$output1 = shell_exec('service asterisk_ipu_gui start');
echo "<pre>$output1</pre>";
$output2 = shell_exec('asterisk -vvvr');
echo "<pre>$output2</pre>";
$output3 = shell_exec('manager show connected');
echo "<pre>$output3</pre>";
?>
同时查看manual,特别是用户贡献笔记
答案 1 :(得分:0)
试试这个。它在与我在上面的评论中提到的登录相同的命令中发出命令:
$output1 = shell_exec('service asterisk_ipu_gui start');
$output2 = shell_exec('asterisk -vvvr "manager show connected"');
$output2
现在应该保留您的预期结果。
此外,尝试将您的www-data用户添加到星号组,这可能是由于权限和所有权问题。如果你可以在本地使用127.0.0.1,这意味着你的本地用户可以这样做并且它可以工作,但是当通过www-data尝试php时,它会失败。
答案 2 :(得分:0)
不要让php执行每个shell命令,而是尝试将所有命令放在shell脚本中,然后用php执行该脚本。
你可以在asterisk.sh中找到命令
#!/bin/bash
service asterisk_ipu_gui start
asterisk -vvvr
manager show connected
现在用php执行:
<?php
$output = shell_exec('/home/user/scripts/asterisk.sh');
echo "$output";
?>
答案 3 :(得分:0)
如果您的php拥有访问星号的root权限,那么它应该可以正常工作
也代替
$output2 = shell_exec('asterisk -vvvr');
$output3 = shell_exec('manager show connected');
尝试
$output2 = shell_exec('asterisk -rx "manager show connected"');