使用PHP ldap_bind函数连接到LDAP服务器时遇到了很多麻烦。 这是我的代码:
<?php
error_reporting(E_ALL);
$ldap_ips = [
'123.456.789.012'
];
$ldapuser = 'cn=Username,ou=Location_A,ou=Location_B,o=CompanyName';
$ldappass = 'secret';
foreach ($ldap_ips as $ip) {
testLdap($ip,$ldapuser,$ldappass);
}
function testLdap($ip,$ldapuser,$ldappass) {
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
fsockopen($ip, 636) or die('failed at port 636');
$ldapconn = ldap_connect("ldaps://" . $ip . ":636") or die("Could not connect to LDAP server.");
if ($ldapconn) {
// Trying to bind to ldap server. Fun stops here...
$ldapbind = @ldap_bind($ldapconn, $ldapuser, $ldappass);
var_dump(ldap_error($ldapconn)); // yields: Can't contact LDAP server
// verify binding
if ($ldapbind) {
die('Success! However, this line has never been reached.');
}
// all done? clean up
ldap_close($ldapconn);
}
}
?>
网址(ldaps://123.456.789.012:636
)在Softerra LDAP浏览器4.5上运行正常,使用&#34;简单&#34;机制。我尝试过的事情包括创建一个名为C:\OpenLDAP\sysconf\ldap.conf
的文件,其中包含文本TLS_REQCERT never
(在论坛上多次提及)无济于事。
服务器规格:Windows Server 2012,IIS,PHP 7.0.20
有没有人知道可能会发生什么,或者至少如何让PHP返回更多信息而不是&#34;无法联系LDAP服务器&#34;?谢谢!