我在 Centos 6 远程服务器上运行了 freeswitch,并在本地机器(Windows 7 x64 PHP 版本 5.3.8)上安装了 XAMPP 进行测试。我正在尝试使用 Mod 事件套接字 ( http://wiki.freeswitch.org/wiki/Event_Socket ) 从 php 脚本连接到自由开关,使用事件套接字库 ( 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 是自由交换服务器的地址。
我有两个问题:
在 Windows 中,我似乎需要一个我在任何地方都找不到的php_ESL.dll。我唯一的文件是:
- ESL.php
- esl_wrap.cpp
- 生成文件
- php_ESL.h
我有PHP版本5.3.8,在ESL中.php使用了dl()函数,我得到:致命错误:在C:''xampp''htdocs''phpesl''ESL中调用未定义的函数dl(.php
+dl() 函数在 ESL 中被调用.php:
// 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; } } }
有没有人知道如何解决这个问题或遇到同样的问题?
谢谢。
可能
最省力的是在某个地方拥有一个Linux网络服务器 - 例如,在Windows PC上的虚拟机中
在您的问题中,我认为dl function
php.ini 文件中禁用。
phpmotion 需要以下 PHP 设置:
Thread saftery= disabled
enable_dl = On
safe_mode = off