我怎样才能获得php_ESL.dll并从 XAMPP 中的 php 加载它,以将其与 Mod 事件套接字一起使用以进行自


How can I get php_ESL.dll and load it from php in XAMPP to use it with Mod event socket for freeswitch

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