2016-08-01 12 views
1

に許可されていない私は、Active Directoryで詳細を修正するための次のコードを持っている:PHPの警告:ldap_modify():変更:操作RDN

ldap_modify:

function updateActiveDirectory($user, $first, $last, $mail, $number, $title, $service, $team) 
{ 
$server = "DC-1"; 
$unit   = "OU=Staff,OU=Users,DC=rugby,DC=internal"; 
$ds    = ldap_connect($server); 
if(!$ds) 
{ 
     return "Cannot connect to LDAP server"; 
} 
$bind = ldap_bind($ds, "DOMAIN\Administrator", "PASSWORD"); 
if(!$bind) 
{ 
     return "Couldn't bind to LDAP server"; 
} 
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); 
$sr = ldap_search($ds, $unit, "(sAMAccountName={$user})"); 
$ent= ldap_get_entries($ds, $sr); 
$userdata = array(); 
$userdata["cn"][0]=$first. " ".$last; 
$userdata["sn"][0]=$last; 
$userdata["mail"][0]=$mail; 
$userdata["telephonenumber"][0]=$number; 
$userdata["company"][0]=$service; 
$userdata["department"][0]=$team; 
$userdata["title"][0]=$title; 
$name = $ent[0]["dn"]; 
ldap_modify($ds, $name, $userdata); 
} 

を私は警告を取得しています():変更:RDNで操作が許可されていません

この問題についてオンラインでは何も見つかりません。ここでの問題は何ですか?

答えて

2

CNのような属性を変更することはできません。その属性はRDNを形成します。これを変更する必要がある場合は、ldap_rename()関数を使用する必要があります。

$rdn = 'cn='.ldap_escape($first." ".$last, null, LDAP_ESCAPE_DN); 
ldap_rename($ds, $ent[0]["dn"], $rdn, null, true);