我试图将窗口的活动目录或LDAP与PHP生成的应用程序(GLPI)连接起来。
连接参数:
连接服务器:
$ds = ldap_connect($host, $port) // return true
@ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
@ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
@ldap_set_option($ds, LDAP_OPT_DEREF, $deref_options);
关联与服务器,用户和密码的连接
ldap_bind ($ds, $ login, $ password)
回报我:
“无法联系LDAP服务器”
我想知道该错误消息会发生什么,因为在第一种方法中它返回true给我,这意味着如果它连接到服务器。
RootDN
这很好,并且具有我正在使用的用户的所有权限。
默认服务器很好,我做了ping
和telnet
。
注意:我已经下载了LDAPExplorer并建立了连接而没有问题。
缺少:$ds = ldap_connect ...
是否与代码中的相似?
它应该是这样的:
$ds = ldap_connect($host, $port);
@ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
@ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
@ldap_set_option($ds, LDAP_OPT_DEREF, $deref_options);
ldap_bind ($ds, $login, $password)
ldap_connect
没有连接到服务器,正如docs中明确指出的那样。它只是创建一个资源并检查给定的值是否合理。使用需要连接到服务器的第一个命令建立实际连接。在这种情况下ldap_bind
。
BTW:“第一种方法”不返回true
,而是返回资源句柄。只有当你传递绝对不可解析的东西时,它才会返回false
。但从来没有true
我建议使用LDAP-URI而不是$host, $port
变体,因为PHP库必须这样做,否则就是内部。这是f.e.的唯一途径。建立LDAPS连接。
好的,我的问题的解决方案是从GLPI版本9.3.0升级到9.3.3。
建议:
要通过安装版本9.3.3来修复某些错误:
chown -R apache: apache glpi / files
chmod -R 755 glpi / files
chown -R apache: apache config
chmod -R 755 glpi / config
也:
setsebool -P httpd_can_network_connect_db 1
谢谢。