gpt4 book ai didi

php - ldap_bind() - 无法联系 LDAP 服务器

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:46 25 4
gpt4 key购买 nike

我有一台运行 CentOS 7 并安装了 LAMP 堆栈的虚拟机。在 VM 上,我试图创建到我的域 Controller 的 LDAPS 连接,它是一个 Windows 2008 R2 VM。我使用的 SSL 证书是自签名的,并且 CA 已添加到 CentOS 7 CA 信任中。

我可以通过 ldapsearch 连接到域 Controller 。将 ldapsearch 调试级别设置为 1 后,我能够验证我的证书是否有效。

ex.) ldapsearch -H "ldaps://server.ad.com" -D "domain\user-name" -W -d 1

每当我尝试通过 php 使用 LDAPS 时,我都会收到 ldap_connect() 成功消息,但 ldap_bind() 总是出错并显示 -1 无法联系 LDAP 服务器。下面是一个代码示例:

<?php

define(LDAP_OPT_DIAGNOSTIC_MESSAGE,0x0032);
echo "defined LDAP_OPT_DIAGNOSTIC_MESSAGE <br />";

$handle = ldap_connect("ldaps://server.ad.com:636");
echo "called ldap_connect <br />";
$errorCode = ldap_errno( $handle );
echo "error code: $errorCode <br />";
$errorMsg = ldap_error( $handle );
echo "error message: $errorMsg <br />";

if (!$handle)
{
echo "ldap_connect method returned null <br />";
}
else
{
echo "ldap_connect returned a handle! <br />";
}

$bind = ldap_bind($handle, 'domain\user', 'password');
echo "called ldap_bind <br />";
$errorCode2 = ldap_errno( $handle );
echo "error code: $errorCode2 <br />";
$errorMsg2 = ldap_error( $handle );
echo "error message: $errorMsg2 <br />";

if (!$bind)
{
echo "ldap_bind method returned null <br />";
}
else
{
echo "ldap_bind returned a bind! <br />";
}

if(ldap_get_option($handle, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error))
{
echo "Error binding to LDAP: $extended_error";
}
else
{
echo "Error bind to LDAP: No additional information is available.";
}
?>

输出:

defined LDAP_OPT_DIAGNOSTIC_MESSAGE
called ldap_connect
error code: 0
error message: Success
ldap_connect returned a handle!
called ldap_bind
error code: -1
error message: Can't contact LDAP server
ldap_bind method returned null
Error bind to LDAP: No additional information is available.

我觉得“无法联系 LDAP 服务器”是一条过于笼统的错误消息,因此我尝试添加 LDAP_OPT_DIAGNOSTIC_MESSAGE(http://php.net/manual/en/function.ldap-bind.php - 第一条评论)。但这似乎不起作用。

有什么想法吗?

最佳答案

经过进一步调查,我发现通过命令行运行这个 PHP 文件可以成功绑定(bind)。它只是在从浏览器查看时失败。

根据这些信息,我能够在 ServerFault 上提出另一个问题,并发现由于 SELinux 配置,此绑定(bind)实际上失败了。

请在此处查看完整答案:https://serverfault.com/questions/677013/php-executes-with-different-results-in-command-line-than-when-browsed-to-in-apac

关于php - ldap_bind() - 无法联系 LDAP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29130549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com