1

我曾尝试通过 php ldap Active-Directory 为 Microsoft Server 2008 R2 数据中心添加用户,但我不能。我总是收到这个错误:

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"; 

关于 Active-Directory 是不正确的。解释是在这样的目录中,您无法选择用于命名对象的属性。例如,“InetOrgPerson”对象必须使用 CN 属性来命名它。有关更多详细信息,请仔细阅读Microsoft 文档中的对象命名中的命名属性。

尝试 :

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