我在 Centos 6 远程服务器上运行了 freeswitch,并且我在本地机器(windows 7 x64 PHP 版本 5.3.8)上安装了 XAMPP 进行测试。我正在尝试使用 Mod 事件套接字(http://wiki.freeswitch.org/wiki/Event_Socket)从 php 脚本连接到 freeswitch,使用事件套接字库(http://wiki.freeswitch.org/wiki/Event_Socket_Library)。
我的php脚本是:
#!/usr/bin/php
<?php
require_once('ESL.php');
$command = "show channels";
$sock = new ESLconnection('xxx.xxx.xxx.xxx', '8021', 'fsAdmin');
$res = $sock->api($command);
printf("%s\n", $res->getBody());
?>
其中 xxx.xxx.xxx.xxx 是 freeswitch 服务器的地址。
我有两个问题:
在 Windows 中,我似乎需要一个我在任何地方都找不到的php_ESL.dll 。我得到的唯一文件是:
- ESL.php
- esl_wrap.cpp
- 生成文件
- php_ESL.h
我有 PHP 版本 5.3.8,在 ESL.php 中使用了 dl() 函数,我得到:致命错误:调用 C:\xampp\htdocs\phpesl\ESL.php 中的未定义函数 dl()
+在 ESL.php 中调用了 dl() 函数:
// Try to load our extension if it's not already loaded. if (!extension_loaded("ESL")) { if (strtolower(substr(PHP_OS, 0, 3)) === 'win') { if (!dl('php_ESL.dll')) return; } else { // PHP_SHLIB_SUFFIX is available as of PHP 4.3.0, for older PHP assume 'so'. // It gives 'dylib' on MacOS X which is for libraries, modules are 'so'. if (PHP_SHLIB_SUFFIX === 'PHP_SHLIB_SUFFIX' || PHP_SHLIB_SUFFIX === 'dylib') { if (!dl('ESL.so')) return; } else { if (!dl('ESL.'.PHP_SHLIB_SUFFIX)) return; } } }
有人知道如何解决这个问题或遇到同样的问题吗?
谢谢。