【问题标题】:PHP LINUX WINDOWS ldap_bind success on WinXP but not LinuxPHP LINUX WINDOWS ldap_bind 在 WinXP 但不是 Linux 上成功
【发布时间】:2011-12-19 11:45:42
【问题描述】:

我有一个在 Windows XP 上的 Apache 上运行的 PHP 脚本,它可以成功地进行 LDAP 身份验证。我将这个相同的脚本复制到 Linux Red Hat 上的 Apache,现在 ldap_bind 调用给了我以下错误:

警告:ldap_bind() [function.ldap-bind]:无法绑定到服务器:无法联系 LDAP 服务器

我可以从 Linux 和 Windows 机器 ping LDAP 服务器。

我比较了 PHP、Apache 和 LDAP 版本,发现如下:

Linux Red Hat 机器: PHP版本:5.1.6 阿帕奇版本:2.2.3 LDAP:OpenLDAP,RCS 版本:$ld:ldap.c,v 1.161.2.3 2006/01/01 12:50:08,API 版本 3001,供应商版本 20343

我的本​​地 Windows 机器: PHP版本:5.3.8 阿帕奇版本:2.2.21 LDAP:OpenLDAP,RCS 版本:$ld:ldap.c 313665 2011/07/25 11:42:53,API 版本 3001,供应商版本 20319

在较早的 Linux 或 Apache 版本上,ldap_bind 是否存在任何已知问题?有没有人知道为什么相同的 PHP 脚本可以从 Windows 机器而不是 Linux 机器成功执行 LDAP 身份验证?

【问题讨论】:

  • 这是我的 PHP 代码:$ldaphost="ldap://some.server.com:3268"; if (!($connect = ldap_connect($ldaphost))) { die ("Could not connect to LDAP server"); } if ($connect) { $result = ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3); } $ldapbind = ldap_bind($connect, $username, $password);

标签: php windows linux ldap


【解决方案1】:

它现在可以在 Linux 机器上运行。

Windows 和 Linux 机器都在使用 OpenLDAP,但 Linux 机器上的 LDAP 未正确配置为连接到 LDAP 服务器。解决方法是更改​​文件 /etc/ldap.conf。此文件中的设置未正确设置。尝试和错误更改此文件中的设置以匹配 Windows 中使用的设置。关键设置似乎是端口。此文件中的端口最初设置为 389,据说是默认值。将此更改为 3268。重新启动 Apache 并再次尝试身份验证,它可以工作。还注释掉了“base”参数。由于 LDAP 在 Windows 域中,因此不需要 Base。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-07
    • 2020-10-24
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多