PHP LINUX WINDOWS ldap_bind在WinXP但不是Linux上成功

问题描述:

我有一个PHP脚本在Apache上运行,可以在Windows XP上成功执行LDAP验证。我将这个脚本复制到Linux Red Hat上的Apache并且ldap_bind呼叫nows给我以下错误:PHP LINUX WINDOWS ldap_bind在WinXP但不是Linux上成功

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

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

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

Linux的红帽机: PHP版本:5.1.6 Apache的版本:2.2.3 LDAP:OpenLDAP的,RCS版本:$ LD:ldap.c,v 1.161.2.3 2006年1月1日十二时50分08秒,API版本3001,供应商版本20343

我的本地Windows计算机: PHP版本:5.3.8 Apache的版本: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身份验证?

+0

这里是我的PHP代码:$ ldaphost =“ldap://some.server.com:3268”;如果(!($ connect = ldap_connect($ ldaphost))){\t \t die(“无法连接到LDAP服务器”); ($ connect){$ result = ldap_set_option($ connect,LDAP_OPT_PROTOCOL_VERSION,3); } $ ldapbind = ldap_bind($ connect,$ username,$ password); – user840930 2011-12-19 13:31:45

它现在在Linux机器上工作。

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