使用PHP连接active directory或LDAP

使用PHP连接active directory或LDAP,php,windows,ldap,Php,Windows,Ldap,我正在尝试将Windows的active directory或LDAP与PHP中的应用程序()连接起来 连接参数: 正在连接服务器: $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_DE

我正在尝试将Windows的active directory或LDAP与PHP中的应用程序()连接起来

连接参数:

正在连接服务器:

$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\u 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)

缺少的:
$ds=ldap\u 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\u connect
不连接到服务器,如中所述。它只是创建一个资源并检查给定的值是否合理。实际连接是使用第一个需要连接到服务器的命令建立的。在这种情况下,
ldap\u绑定

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


我建议使用LDAP-URI而不是
$host,$port
变体,因为PHP库必须在内部这样做。这是f.e.建立LDAPS连接的唯一方法。

ldap\u connect
没有连接到服务器,如中所述。它只是创建一个资源并检查给定的值是否合理。实际连接是使用第一个需要连接到服务器的命令建立的。在这种情况下,
ldap\u绑定

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


我建议使用LDAP-URI而不是
$host,$port
变体,因为PHP库必须在内部这样做。这是f.e.建立LDAPS连接的唯一方法。

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

建议:

  • 对于用户来说,这可能会发生什么,请验证GLPI通知的有关挂起的安装包的消息。所以我选择了更新,连接没有问题

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

要通过安装版本9.3.3修复某些错误,请执行以下操作:

chown-R apache:apacheglpi/files

chmod-R 755 glpi/文件

chown-R apache:apache配置

chmod-R 755 glpi/config

此外:

setsebool-p httpd\u can\u network\u connect\u db 1


谢谢。

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

建议:

  • 对于用户来说,这可能会发生什么,请验证GLPI通知的有关挂起的安装包的消息。所以我选择了更新,连接没有问题

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

要通过安装版本9.3.3修复某些错误,请执行以下操作:

chown-R apache:apacheglpi/files

chmod-R 755 glpi/文件

chown-R apache:apache配置

chmod-R 755 glpi/config

此外:

setsebool-p httpd\u can\u network\u connect\u db 1


谢谢。

我正在运行
echo ldap\u error($ds)返回true,然后执行ldap\u绑定($ds,$login,$password)
返回false,然后
ldap\u错误($ds)
返回“无法联系ldap服务器”。我还尝试将服务器的ip放入方法中,但得到了相同的结果而不是第一个
回显ldap_错误($ds)
查看
$ds
的实际值。要获取有关错误的更多信息,您可能不需要查看描述提取上一个错误的更多信息的方法。执行
var\u dump(ldap\u error($ds))
return me string(7)“Success”。执行
var\u dump($ds)
return me我正在运行的类型(ldap link)的资源(65)
echo ldap\u error($ds)返回true,然后执行ldap\u绑定($ds,$login,$password)
返回false,然后
ldap\u错误($ds)
返回“无法联系ldap服务器”。我还尝试将服务器的ip放入方法中,但得到了相同的结果而不是第一个
回显ldap_错误($ds)
查看
$ds
的实际值。要获取有关错误的更多信息,您可能不需要查看描述提取上一个错误的更多信息的方法。执行
var\u dump(ldap\u error($ds))
return me string(7)“Success”。执行
var\u dump($ds)
return me resource(65)类型(ldap link)