我尝试监视星号中的呼叫。
如果我想听事件,我必须使用此命令启动服务,并将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>";
?>
您应该在每个命令后加上回声
<?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,尤其是用户贡献的注释
不是让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";
?>
尝试一下。它以与我在上面的评论中提到的登录名相同的命令发布该命令:
$output1 = shell_exec('service asterisk_ipu_gui start');
$output2 = shell_exec('asterisk -vvvr "manager show connected"');
$output2
现在应该保持您的预期结果。
此外,请尝试将您的www数据用户添加到星号组,这可能是由于权限和所有权问题所致。如果您可以使用127.0.0.1在本地进行操作,则意味着您的本地用户可以使用它并且可以运行,但是当php通过www-data尝试运行时,它将失败。
如果您的php具有访问星号的root权限,则应该可以使用
也代替
$output2 = shell_exec('asterisk -vvvr');
$output3 = shell_exec('manager show connected');
尝试
$output2 = shell_exec('asterisk -rx "manager show connected"');