繁体   English   中英

使用PHP连接活动目录或LDAP

[英]Connect an active directory or LDAP with PHP

我试图将窗口的活动目录或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并成功建立了连接。

是否缺少: $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)

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

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

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

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

建议:

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

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

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

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM