如何播放星号';来自php应用程序的录制调用是什么?

如何播放星号';来自php应用程序的录制调用是什么?,php,html,asterisk,Php,Html,Asterisk,我的公司有一个Issable(基于星号的VoIP解决方案)。我正在用PHP开发一个应用程序,其中一部分需要播放录制的调用。该应用程序位于与Issabel不同的服务器中。我已经可以访问声音文件路径,例如: /var/spool/asterisk/monitor/2018/10/20/rg-600-2122238507-20181020-223323-1540062203.100880.wav 当我想通过在这个路径的开头添加issabel服务器的ip地址来使用HTML的音频标记播放这个文件时,不会

我的公司有一个Issable(基于星号的VoIP解决方案)。我正在用PHP开发一个应用程序,其中一部分需要播放录制的调用。该应用程序位于与Issabel不同的服务器中。我已经可以访问声音文件路径,例如:

/var/spool/asterisk/monitor/2018/10/20/rg-600-2122238507-20181020-223323-1540062203.100880.wav

当我想通过在这个路径的开头添加issabel服务器的ip地址来使用HTML的音频标记播放这个文件时,不会发生任何事情,甚至Isaabel也会阻止我的ip地址,因为服务器受密码保护。如果您能从我的PHP应用程序中播放此路径中的文件,我们将不胜感激。

正如FélixGagnon Grenier提到的,此问题的解决方案是将音频流式传输到应用程序。我在服务器中创建了stream.php,其中包含以下代码:

 <?php
    $filePath = $_GET['file'];
    $fileName = basename($filePath);
    $fp=fopen($filePath, "rb");
    header("Content-type: application/octet-stream");
    header('Content-disposition: attachment; filename=$fileName');
    header("Content-transfer-encoding: binary");
    header("Content-length: ".filesize($filePath)."    ");
    fpassthru($fp);
    fclose($fp);

正如FélixGagnon Grenier提到的,这个问题的解决方案是通过将音频流传输到应用程序来解决的。我在服务器中创建了stream.php,其中包含以下代码:

 <?php
    $filePath = $_GET['file'];
    $fileName = basename($filePath);
    $fp=fopen($filePath, "rb");
    header("Content-type: application/octet-stream");
    header('Content-disposition: attachment; filename=$fileName');
    header("Content-transfer-encoding: binary");
    header("Content-length: ".filesize($filePath)."    ");
    fpassthru($fp);
    fclose($fp);

您需要以编程方式流式传输内容。也许是谷歌的“如何在php中传输wav文件”。@FélixGagnon Grenier感谢兄弟你给了我线索,我将在下一篇文章中发布这个问题的完整解决方案。你需要以编程方式传输内容。也许是谷歌的“如何在php中传输wav文件”。@FélixGagnon Grenier感谢兄弟你给了我线索,我将在下一篇博文中发布这个问题的完整解决方案。但是要小心,因为该脚本可以让某人执行服务器磁盘上的任何文件(php进程用户可以访问的任何文件,可能很多)。也许你可以在发球前验证一部分路线,但也可能没有那么大的危险。@FélixGagnon Grenier是的,说得对。路径验证似乎是处理hole.Solid的合理方法。但是要小心,因为该脚本可以让某人执行服务器磁盘上的任何文件(php进程用户可以访问的任何文件,可能很多)。也许你可以在发球前验证一部分路线,但也可能没有那么大的危险。@FélixGagnon Grenier是的,说得对。路径验证似乎是解决该漏洞的合理方法。