Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ldap“加载项php返回”;已存在68“;错误_Php_Ldap - Fatal编程技术网

ldap“加载项php返回”;已存在68“;错误

ldap“加载项php返回”;已存在68“;错误,php,ldap,Php,Ldap,我只是不知道我做错了什么,我在网上搜寻答案,但找不到任何有效的方法。请有人看看我的代码,告诉我哪里出错了?如果我注释掉“objectclass”,我会得到“server不愿意执行53”,如果我将OU更改为愚蠢的东西($dn),那么我会得到“命名冲突”,如果我捣毁键盘并输入用户名的随机字母,我仍然会得到“已经存在”错误,即使我输入的内容中没有任何部分存在。如果我在同一OU中为另一个CN添加一个ldap_mod_replace行,它工作正常,因此我知道连接正在工作。我也尝试过在除objectclas

我只是不知道我做错了什么,我在网上搜寻答案,但找不到任何有效的方法。请有人看看我的代码,告诉我哪里出错了?如果我注释掉“objectclass”,我会得到“server不愿意执行53”,如果我将OU更改为愚蠢的东西($dn),那么我会得到“命名冲突”,如果我捣毁键盘并输入用户名的随机字母,我仍然会得到“已经存在”错误,即使我输入的内容中没有任何部分存在。如果我在同一OU中为另一个CN添加一个ldap_mod_replace行,它工作正常,因此我知道连接正在工作。我也尝试过在除objectclass之外的所有对象上不使用“[0]”(正如我在所有示例中看到的)。公司和用户信息编辑明显

$server = "ldap://ServerName.domain.co.uk";
$dn = "OU=Advertising,OU=EmailDepartmentAccounts,OU=Administration,OU=Central,DC=domain,DC=co,DC=uk";

//domain user to connect to LDAP
$user = "helpdesk.ldap@domain.co.uk";
//user password
$psw = "Password";

$ds = ldap_connect($server);
if ($ds) {
    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
    $r = ldap_bind($ds, $user, $psw);

    $proxyaddresses_array = array();
    $proxyaddresses_array[0] = "X400:c=GB;a= ;p=Company Name p;o=PWEXCHANGE;s=Kitbag;g=Digital;";
    $proxyaddresses_array[1] = "SMTP:test.maff@domain.co.uk";
    $proxyaddresses_array[2] = "smtp:test.maff@other.co.uk";

    //$NewUser = array();
    $NewUser["cn"][0] = "Test Maff1";
    $NewUser["userprincipalname"][0] = "Test.Maff1@domain.co.uk";
    $NewUser["samaccountname"][0] = "Test.Maff";
    $NewUser["objectClass"][0] = "top";
    $NewUser["objectClass"][1] = "person";
    $NewUser["objectClass"][2] = "organizationalPerson";
    $NewUser["objectClass"][3] = "user";
    //$NewUser["givenname"][0] = "Test";
    //$NewUser["sn"][0] = "Maff";
    //$NewUser["instancetype"][0] = 4;
    //$NewUser["physicaldeliveryofficename"][0] = "Leeds";
    //$NewUser["displayname"][0] = "Test Maff";
    //$NewUser["proxyaddresses"] = $proxyaddresses_array;
    //$NewUser["department"][0] = "IT";
    //$NewUser["company"][0] = "Company Name";
    //$NewUser["homemta"][0] = "CN=Microsoft MTA,CN=STH-EXC-01B,CN=Servers,CN=BSP,CN=Administrative Groups,CN=Johnston Press plc,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=domain,DC=co,DC=uk";
    //$NewUser["displaynameprintable"][0] = "Test Maff";
    //$NewUser["mailnickname"][0] = "Test.Maff";
    //$NewUser["useraccountcontrol"][0] = "512";
    //$NewUser["primarygroupid"][0] = "513";
    //$NewUser["name"] [0]= "Test Maff";
    $NewUser["objectcategory"][0] = "CN=Person,CN=Schema,CN=Configuration,DC=domain,DC=co,DC=uk";
    //$NewUser["mail"] = "Test.Maff@domain.co.uk";

    if ($NewUserAdded = ldap_add($ds, $dn, $NewUser)) {
        echo "success<br />";
    } else {
        echo ldap_error($ds) . " " . ldap_errno($ds);
    }
    ldap_close($ds);
} else {
    echo "unable to connect to LDAP server";
}
$server=”ldap://ServerName.domain.co.uk";
$dn=“OU=广告,OU=电子邮件部门帐户,OU=管理,OU=中心,DC=域,DC=co,DC=uk”;
//要连接到LDAP的域用户
$user=“帮助台。ldap@domain.co.uk";
//用户密码
$psw=“密码”;
$ds=ldap\u连接($server);
若有($ds){
ldap_设置_选项($ds,ldap_选项_协议_版本,3);
ldap_设置_选项($ds,ldap_选项_引用,0);
$r=ldap\u绑定($ds,$user,$psw);
$proxyaddresses_array=array();
$proxyaddresses_数组[0]=“X400:c=GB;a=;p=公司名称p;o=PWEXCHANGE;s=Kitbag;g=Digital;”;
$proxyaddresses_数组[1]=“SMTP:测试。maff@domain.co.uk";
$proxyaddresses_数组[2]=“smtp:测试。maff@other.co.uk";
//$NewUser=array();
$NewUser[“cn”][0]=“Test Maff1”;
$NewUser[“userprincipalname”][0]=“测试。Maff1@domain.co.uk";
$NewUser[“samaccountname”][0]=“Test.Maff”;
$NewUser[“objectClass”][0]=“top”;
$NewUser[“objectClass”][1]=“person”;
$NewUser[“objectClass”][2]=“organizationalPerson”;
$NewUser[“objectClass”][3]=“user”;
//$NewUser[“givenname”][0]=“测试”;
//$NewUser[“sn”][0]=“Maff”;
//$NewUser[“instancetype”][0]=4;
//$NewUser[“physicaldeliveryofficename”][0]=“利兹”;
//$NewUser[“displayname”][0]=“测试Maff”;
//$NewUser[“proxyaddresses”]=$proxyaddresses\u数组;
//$NewUser[“部门”][0]=“IT”;
//$NewUser[“公司”][0]=“公司名称”;
//$NewUser[“homemta”][0]=“CN=Microsoft MTA,CN=STH-EXC-01B,CN=Servers,CN=BSP,CN=Administration Group,CN=Johnston Press plc,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=domain,DC=co,DC=uk”;
//$NewUser[“displaynameprintable”][0]=“测试Maff”;
//$NewUser[“mailnickname”][0]=“Test.Maff”;
//$NewUser[“useraccountcontrol”][0]=“512”;
//$NewUser[“primarygroupid”][0]=“513”;
//$NewUser[“名称”][0]=“测试Maff”;
$NewUser[“objectcategory”][0]=“CN=Person,CN=Schema,CN=Configuration,DC=domain,DC=co,DC=uk”;
//$NewUser[“邮件”]=“测试。Maff@domain.co.uk";
if($NewUserAdded=ldap\u add($ds,$dn,$NewUser)){
呼应“成功
”; }否则{ 回显ldap_错误($ds)。“”.ldap_错误号($ds); } ldap_close($ds); }否则{ echo“无法连接到LDAP服务器”; }
我可能错了,但从我在你的代码中读到的内容来看,你有一个条目
OU=advisting,OU=EmailDepartmentAccounts,OU=Administration,OU=Central,DC=domain,DC=co,DC=uk
。在我解释代码时,您希望在该条目下方添加一个条目。但是您必须提供条目的DN作为
ldap\u add
的第二个参数。但是您提供了新条目的baseDN。这已经存在了。否则,您将无法在其中添加内容

因此,在调用
ldap\u add
之前,应该调用类似以下内容的

$dn='cn='$新用户['cn'][0].'$dn

使用baseDN并在其前面加上当前用户的cn的


希望这有帮助

这在19年仍然很有价值。有几天我的头一直在痛,这个-$dn='cn='$新用户['cn'][0].'$dn;也为我做了这个把戏。