【发布时间】:2014-09-04 07:28:36
【问题描述】:
我已经浏览了很多关于这个的问题,并且已经用尽了我的选择,所以就这样吧。我有一个 Windows 2008R2 域控制器。我正在使用 PHP 从不同的服务器,相同的域,使用 LDAP 连接到它。 (还有 Win2008R2、IIS7.5)我已经确保了以下几点:
- 域控制器的证书已导入到 PHP 机器上受信任的根权限存储
- 我在 PHP 机器上使用了 ldp.exe,可以使用 DC 的名称和端口 636 通过 LDAPS 进行连接和绑定
- 我的用户凭据正确
- 我可以使用 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
【问题讨论】:
-
你尝试过stackoverflow.com/questions/5258556/…中提到的建议吗?
-
@YSU - 是的,我放了 putenv('LDAPTLS_REQCERT=never');在脚本顶部以及将 ldap.conf 放在根目录(c:) 以及建议的文件夹 c:\openldap\sysconf\ 中,都无济于事。也许我应该升级 PHP?我想我会试试的。我的证书是有效的,当我尝试连接时,DC 端没有 SSL 错误。