PHP LDAPS绑定失败,我缺少什么来完成这项工作


PHP LDAPS Bind failing, what am I missing to make this work?

我已经浏览了很多关于这方面的问题,并且已经用尽了我的选择,所以它开始了。我有一个Windows 2008R2域控制器。我使用PHP从不同的服务器、相同的域使用LDAP连接到它。(也是Win2008R2,IIS7.5)我已确保以下内容:

  • 域控制器的证书已导入PHP机器上的受信任根权限存储
  • 我在PHP机器上使用了ldp.exe,可以使用DC和端口636的名称通过LDAPS连接and绑定
  • 我的用户凭据正确
  • 我可以使用LDAP连接,PHP中的389端口很好

这是我的代码:

putenv('LDAPTLS_REQCERT=never');
    $host = "ldaps://mydc.thing.com:636";
    $dn = "Admin User";
    $dnp = "adminPaSwOrD";

    $base = "DC=thing,DC=com";
    $scope = "sub";
    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
    $ds = ldap_connect($host);
    $r=ldap_bind($ds, $dn, $dnp);  

错误消息总是:

PHP Warning:  ldap_sasl_bind() [<a href='function.ldap-sasl-bind'>function.ldap-sasl-bind</a>]: Unable to bind to server: Can't contact LDAP server in ...

相关PHP信息:

#Version 5.3.8
#cURL: 7.22.0, SSL:yes, dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp
#LDAP: enabled, SASL: enabled, OpenLdap v.20319

我搜索过Goggle,自己也试过不少东西。更糟糕的是,PHP机器上的LDAP客户端可以连接并绑定到DC,而不是在PHP中。我还尝试了CLI中的PHP(将IIS从混合中删除),但它返回了相同的错误。

如有任何帮助,我们将不胜感激。

SG

我将PHP升级到5.6,问题就消失了。我不知道为什么。为了回答我自己的问题"我缺少什么来完成这项工作?"-我想我缺少了正确的PHP版本。