Zend framework 使用INI配置而不是PHP数组时,LDAP连接器停止工作

Zend framework 使用INI配置而不是PHP数组时,LDAP连接器停止工作,zend-framework,ldap,ini,Zend Framework,Ldap,Ini,我有这个功能: <?php private function spawnAdapter($credentials) { //$ldapConfig = array("server1" => array( // "host" => "172.16.100.32", // "useStartTls" => 1, // "accountDomainName" => "schoolxp", // "accountDomain

我有这个功能:

<?php
private function spawnAdapter($credentials) {

    //$ldapConfig = array("server1" => array(
    //  "host" => "172.16.100.32",
    //  "useStartTls" => 1,
    //  "accountDomainName" => "schoolxp",
    //  "accountDomainNameShort" => "schoolxp",
    //  "accountCanonicalForm" => 3,
    //  "baseDn" => "DC=schoolxp",
    //));

    // We must retrieve the LDAP servers from the conf
    $ldapConfig = $this->_config->ldap->toArray();

    // Remove the log path, otherwise the adapter will think this is
    // one of our servers and fail.
    unset($ldapConfig['log']);   

    $adapter = new Zend_Auth_Adapter_Ldap(
        $ldapConfig, 
        $credentials['username'], 
        $credentials['password']
    );

    return $adapter;

}
?>
当PHP数组用于Auth_适配器时,代码运行良好,但是如果我切换到使用INI配置,它将失败并出现未知错误

我已经在INI文件数组和PHP数组上运行了print_f,它们是相同的,但是LDAP适配器仍然在日志文件中抛出异常

有趣的是,日志中的连接字符串对于INI文件和数组都是相同的。。对于感兴趣的人,以下是日志文件:


如果您能了解情况,我们将不胜感激

在我看来,LDAP适配器试图连接到错误的端口0。 请尝试使用以下命令指定它:

ldap.server1.port = 389

或您正在使用的任何端口。

尝试通过SSL/TLS添加389和636 LDAP,但仍然无法正常工作-尝试连接时仍会出现未知错误代码错误。您是否拥有有效的证书自签名证书在AD服务器上无法正常工作?如果没有,您可能想先尝试在没有TLS的情况下连接。这就成功了!但是,它没有解释为什么在ini文件中设置它不起作用,因为本质上LDAP适配器接收完全相同的数组,或者我认为无论使用哪种配置,它都是如此,并且当本机PHP数组使用完全相同的配置时,它会起作用settings@BradMorris那么你不介意接受我的回答吗虽然这解决了这个问题,但它并没有真正回答我的问题——为什么会发生这种情况?两个数组本质上是相同的,那么为什么一个可以工作而另一个不能呢?
ldap.server1.port = 389