2014-10-08 72 views
3

我想寫一些PHP來查詢AD LDS/LDAP(2012 R2)實例,我無法獲得連接的東西。我目前已將其設置爲未加密連接(prod將爲ssl/tls)。與AD LDS的PHP LDAP連接

電流故障排除:

  • 我可以通過ldapsearch的連接到我的LDAP實例,執行查詢
  • 我可以通過LDP連接上我的窗戶框
  • 我可以ping LDAP服務器和telnet到端口從我的nix盒子。
  • 嘗試全RDN輸入用戶名
  • 嘗試URI(LDAP:// ldapserver:50001或傳遞,因爲它是自己的VAR的端口)

我已經重寫代碼一百萬次以爲這是一個某種語法錯誤或某些東西傳遞不正確。 $ ldapconn正在返回「資源ID#2」,根據PHP手冊,這似乎是正確的。我很困惑這一點。是否有任何額外的調試可以打開?

這裏是它踢回錯誤:綁定到服務器無法:

警告:的ldap_bind()無法聯繫LDAP服務器/usr/share/nginx/html/logintest3.php上線20

下面是相關代碼:

<?php 

// all the debugging 
ini_set('display_errors', 'On'); 
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); 

$ldapuser = "ldapbind"; 
$ldappassword = "ldapbinder"; 
$ldapserver = "ldapserver"; 
$ldapport = 50001; 

// connect to ldap server 
$ldapconn = ldap_connect($ldapserver, $ldapport) 
or die("Could not connect to $ldapserver"); 

// check if ldap_connect returned a resource value 
if($ldapconn) echo "$ldapconn"; 

// attempting bind 
$ldapbind = ldap_bind($ldapconn, $ldapuser, $ldappassword); 

echo "Ldap connection debug: " . ldap_error($ldapconn) . "\n"; 

?> 
+1

打開'ldap_set_option(NULL,LDAP_OPT_DEBUG_LEVEL,7)' – 2014-10-08 22:35:12

+0

請嘗試以下方法: ldap_set_option($ LDAP,LDAP_OPT_REFERRALS,0); ldap_set_option($ ldap,LDAP_OPT_PROTOCOL_VERSION,3); – 2014-10-08 22:39:46

+0

您是否驗證過端口50001實際上是未加密的LDAP?在我的網站上,50000是LDAP,50001是LDAPS。我需要在URL中指定端口,ldap_connect的第二個參數不起作用。 我還需要爲綁定用戶輸入完整的DN字符串。 – datagutten 2017-09-15 10:59:03

回答

0

嘗試

ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); 
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);