0

我在 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;
        }
      }
    }
    

有人知道如何解决这个问题或遇到同样的问题吗?

谢谢。

4

2 回答 2

0

可能最少的努力就是在某个地方拥有一个 Linux 网络服务器 - 例如,在你的 Windows PC 上的虚拟机中

于 2012-06-17T21:42:10.183 回答
0

在您的问题中,我认为dl function在 php.ini 文件中已禁用。

phpmotion 需要这些 PHP 设置:

Thread saftery= disabled
enable_dl = On
safe_mode = off
于 2015-05-27T12:30:23.053 回答