【发布时间】:2014-03-04 16:04:11
【问题描述】:
我正在为我们的用户编写一个小型密码重置脚本,在 IIS7.5 服务器上使用 PHP5。我在我们的 Active Directory 控制器上启用了基于 SSL 的 LDAP,并使用 ldp.exe 测试它是否正常工作
这是连接服务器的代码:
$ldap_server = "ldaps://AD02.district.local";
$ldap_port = "636";
$ldap_user = "service_lookup@district.local";
$ldap_pass = "(goes here)";
$ds = ldap_connect($ldap_server,$ldap_port);
ldap_bind($ds,$ldap_user,$ldap_pass);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
但是,当我执行脚本时,出现以下错误:
警告:ldap_bind() [function.ldap-bind]:无法绑定到服务器: 无法联系第 11 行 D:\Sites\Lookup\search.php 中的 LDAP 服务器
如果我将 $ldap_server 设置为使用 ldap:// 而不是 ldaps://,它会连接(即使端口设置为 636),但实际的重置功能不起作用(“服务器不愿意执行")。
有没有办法进一步解决这个问题?或者有谁知道可能出了什么问题?dd
【问题讨论】:
-
检查两件事:如果在
php.ini中启用了ldap;其次确保启用ldaps,也许只是启用常规ldap,在这种情况下端口不同 -
php_ldap.dll 在我的 php.ini 文件中启用,当通过非 SSL LDAP 连接时,我能够连接到 AD 服务器并执行搜索。我的 AD 服务器上启用了基于 SSL 的 LDAP,我可以验证它是否正常工作,因为我可以通过 SSL 从其他工具连接到它。我需要在我的 php.ini 文件中配置什么来启用 LDAP over SSL?
-
除了在 php.ini 中启用
php_openssl.dll之外,php.ini 中没有任何内容可以通过 SSL 启用 LDAP。还有一件事是您的 AD 中也启用了 LDAP 连接? -
php_openssl.dll 也已启用。我们的 AD 上启用了 LDAP 连接,因为我们有几个其他应用程序通过 LDAP/LDAPS 连接到 AD。最值得注意的是我们的 SSO 系统,它使用 LDAPS,但使用的是 Java 而不是 PHP。
-
这很奇怪。我建议回显
ldap_error我认为问题不在于连接到LDAP,问题可能在于ldap_bind。我想您需要在绑定查询中包含 base dn 才能解决此问题
标签: php iis active-directory ldap