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