我在Windows XP的Apache上运行了一个PHP脚本,它可以成功地进行LDAP身份验证。我将相同的脚本复制到Linux Red Hat上的Apache上,ldap_bind调用现在给了我以下错误:
警告:ldap_bind() [function。LDAP -bind]: cannot bind to server: Can't contact LDAP server
我可以从Linux和Windows机器上ping LDAP服务器。
我比较了PHP、Apache和LDAP版本,发现如下:
Linux Red Hat机器:PHP版本:5.1.6Apache版本:2.2.3LDAP: OpenLDAP, RCS版本:$ld: LDAP .c, v 1.161.2.3 2006/01/01 12:50:08, API版本3001,厂商版本20343
我的本地Windows机器:PHP版本:5.3.8Apache版本:2.2.21LDAP: OpenLDAP, RCS版本:$ld: LDAP .c 313665 2011/07/25 11:42:53, API版本3001,厂商版本20319
在早期的Linux或Apache版本上ldap_bind是否有任何已知的问题?有人知道为什么相同的PHP脚本可以成功地从Windows机器进行LDAP身份验证,而不是Linux机器吗?
它现在可以在Linux机器上运行。
Windows和Linux机器都在使用OpenLDAP,但是Linux机器上的LDAP没有正确配置为连接到LDAP服务器。修复方法是修改/etc/ldap.conf文件。此文件中的设置设置不正确。试着修改该文件中的设置以匹配Windows中使用的设置。关键设置似乎是端口。该文件中的端口最初设置为389,应该是默认值。将其改为3268。重新启动Apache并再次尝试身份验证,它工作了。还注释掉了'base'参数。不需要Base,因为LDAP在Windows域中。