2016-10-06 3 views
1

При подключении к серверу LDAP, вы можете предоставить несколько хостов, разделенных пробелом:Извлечение сервера LDAP вы подключены в PHP

$resource = ldap_connect('ldap://dc01.corp.acme.org ldap://dc02.corp.acme.org'); 

Но есть способ, чтобы получить один, который на самом деле является используется после успешного связывания?

+0

Вы можете быть в состоянии использовать [ 'ldap_get_option'] (http://php.net/manual/en/function.ldap-get-option.php) с 'LDAP_OPT_HOST_NAME'. –

+0

К сожалению, это возвращает оба имени хоста с удаленными протоколами: 'dc01.corp.acme.org:389 dc02.corp.acme.org: 389' –

+0

А, слишком плохо. Раньше я не пробовал, но думал, что это выглядит многообещающе. –

ответ

1

К сожалению, к сожалению, нет настоящего хорошего способа. Существует AD специфический способ с помощью проверки RootDSE:

$con = ldap_connect('ldap://dc1 ldap://dc2'); 
ldap_set_option($con, LDAP_OPT_PROTOCOL_VERSION, 3); 
ldap_set_option($con, LDAP_OPT_REFERRALS, 0); 
ldap_bind($con, '[email protected]', 'correct-horse-battery-staple'); 

$sr = ldap_read($con, '', 'objectClass=*', ['dnshostname']); 
$entry = ldap_get_entries($con, $sr); 

// This is the DC we are on... 
echo $entry[0]['dnshostname'][0]; 
Смежные вопросы