使用PHP连接活动目录或LDAP

时间:2018-12-10 22:30:08

标签: php windows ldap

我正在尝试将窗口的活动目录或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很好,并且具有我正在使用的用户的所有权限。

默认服务器很好,我做了pingtelnet

注意:我已经下载了LDAPExplorer并成功建立了连接。

3 个答案:

答案 0 :(得分:1)

缺少的$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)

答案 1 :(得分:1)

ldap_connect不会连接到服务器,正如docs中明确说明的那样。它仅创建资源并检查给定的值是否合理。实际连接是通过需要连接到服务器的第一个命令建立的。在这种情况下,ldap_bind

顺便说一句:“第一个方法”不返回true,而是返回一个资源句柄。只有当您传递绝对不可解析的内容时,它才会返回false。但是从不 true

我建议使用LDAP-URI而不是$host, $port变体,因为PHP库必须在内部进行此操作。这是前往f.e.的唯一途径建立LDAPS连接。

答案 2 :(得分:1)

好的,解决我的问题的方法是从GLPI版本9.3.0升级到9.3.3。

建议:

  • 对于用户,这可能会发生什么,请验证GLPI告知有关挂起的安装软件包的消息。所以我选择了更新,并且连接正常进行。

  • 对于无法更新版本的用户,请验证apache软件包是否正在等待安装或更新,以及在安装程序的安装过程中,请务必小心安装似乎未决的整个列表。

    < / li>

要通过安装版本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

谢谢。