1

Microsoft Server 2008 R2 データセンターの php ldap Active-Directory 経由でユーザーを追加しようとしましたが、できません。私はいつもこのエラーを受け取ります:

An error occurred. Error number 64: Naming violation

コードは次のとおりです。

<?php 
$ldaprdn = 'administrador@correo.mx'; 
$ldappass = 'dir378prob@'; 
$ds = 'correo.mx'; 
$dn = 'ou=usuarios,dc=correo,dc=mx'; 
$puertoldap = 389; 
$ldapconn = ldap_connect($ds,$puertoldap)or die("ERROR: I Don'n connect to LDAP."); 

if ($ldapconn) 
{ 
  ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION,3); 
  ldap_set_option($ldapconn, LDAP_OPT_REFERRALS,0); 
  $con = ldap_bind($ldapconn, $ldaprdn, $ldappass); 
  if ($con) 
  {                 

    $info["cn"] = $_POST['cn'];
    $info["sn"] = $_POST['sn'];
    $info["mail"] = $_POST['mail'];
    $info["objectclass"] = "inetorgperson";

    // prepare DN for new entry
    $dn_aux = "mail=" . $_POST['mail'] . ",ou=usuarios,dc=correo,dc=mx";
    $result = ldap_add($ldapconn, $dn_aux, $info);

    if($result) 
    {
      echo "New entry with DN " . $dn . " added to LDAP directory."; 
    } 
    // else display error   
    else 
    {
      echo "An error occurred. Error number " . ldap_errno($conn) . ": " .
      ldap_err2str(ldap_errno($conn)); 
    }
  } 
  else 
  { 
    echo "LDAP bind error..."; 
  } 
} 
ldap_close($ldapconn); 
?> 

私はこの LDAP で最初の一歩を踏み出しているので、詳しく説明してください。

4

1 に答える 1

1

正しいPHP構文はわかりませんが、次の行です。

$dn_aux = "mail=" . $_POST['mail'] . ",ou=usuarios,dc=correo,dc=mx"; 

ActiveDirectoryに関しては正しくありません。そのようなディレクトリでは、オブジェクトの命名に使用する属性を選択できないという説明があります。たとえば、「InetOrgPerson」オブジェクトは、CN属性を使用して名前を付ける必要があります。詳細については、Microsoftのドキュメントのオブジェクト命名における属性の命名を注意深く読んでください。

試す :

dn_aux = "CN=" . $_POST['cn'] . ",ou=usuarios,dc=correo,dc=mx"; 
于 2012-07-10T03:43:44.160 に答える