Php ldap#u bind():无法绑定到服务器:Can';不要联系LDAP服务器
我正在尝试连接到Symfony应用程序中的LDAP服务器。我遇到了一些困难 经过本地测试,一切正常。我可以通过以下代码轻松连接并绑定到LDAP服务器:Php ldap#u bind():无法绑定到服务器:Can';不要联系LDAP服务器,php,symfony,ldap,Php,Symfony,Ldap,我正在尝试连接到Symfony应用程序中的LDAP服务器。我遇到了一些困难 经过本地测试,一切正常。我可以通过以下代码轻松连接并绑定到LDAP服务器: $un = $user->getUsername(); if (!$connect = ldap_connect("10.XX.XX.X", 389)) { $auth = false; } else { if($password !== null){ if (
$un = $user->getUsername();
if (!$connect = ldap_connect("10.XX.XX.X", 389)) {
$auth = false;
} else {
if($password !== null){
if (!$res = ldap_bind($connect, $un, $password)) {
$auth = false;
} else {
$auth = true;
}
}
}
但在服务器上时,它会给我:
Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP server in LdapProvider.php on line 71
我猜这是由于服务器端配置错误造成的。不过我对LDAP还比较陌生,所以这里有人可以帮我吗 与OP-ldap相同的问题也适用于二进制php,但不适用于Apache。我认为CA有问题,但事实并非如此 SELinux正在运行。当我临时禁用SELinux时,ldap测试脚本在浏览器中运行良好。这最终把我引向了这个和这个。在这里,我们了解到: SELinux不允许httpd守护进程与LDAP对话 同一台计算机上的服务器 因此,SELinux有许多细粒度的开关,允许来自不同进程的特定活动。在我的例子中,SELinux被配置为开箱即用,不允许LDAP连接(即使在firewalld中启用了ldaps) 您可以使用以下方法检查httpd的SELinux配置:
getsebool -a | grep httpd
返回:
[acoder@myboxen]# getsebool -a | grep httpd
httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off
要通过httpd启用SELinux网络连接,请执行以下操作:
setsebool -P httpd_can_network_connect on
无需重新启动Apache。从那一刻起,我的ldap脚本工作得很好
如上所述,如果临时禁用SELinux进行测试,请确保使用setEnforce1
将其设置回Enforcement
希望这对其他人有帮助。您的文件是LdapProvider.php吗?71号线上有什么?您尝试在本地和服务器上连接到同一个ldap服务器?您是否尝试对用户名和密码进行硬编码并试一试?我尝试过硬编码,是的,但没有结果。它在ldap_bind()上抛出错误-第71行就是这样。没有,我已经在本地开发了这个项目,现在我想部署它。检查您是否有权从本地连接到ldap服务器。我该怎么做,paistra?