我已经浏览了很多关于这方面的问题,并且已经用尽了我的选择,所以它开始了。我有一个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版本。