gpt4 book ai didi

php - php 中的 ldap_add 返回 "already exists 68"错误

转载 作者:行者123 更新时间:2023-12-02 14:33:43 27 4
gpt4 key购买 nike

我只是不知道我做错了什么,我在网上寻找答案,但找不到任何有效的方法。请有人看看我的代码并告诉我哪里出了问题?如果我注释掉“objectclass”,我会得到“服务器不愿意执行 53”,如果我将 OU 更改为一些愚蠢的东西($dn),那么我会得到“命名违规”,如果我混搭键盘并输入随机字母用户名 我仍然收到“已存在”错误,即使我输入的内容不存在。如果我为同一 OU 中的另一个 CN 添加 ldap_mod_replace 行,它可以正常工作,因此我知道连接正在工作。我也尝试过在除对象类之外的所有对象上都不使用“[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";
}

最佳答案

我可能是错的,但从我在你的代码中读到的内容来看,你有一个条目OU=Advertising,OU=EmailDepartmentAccounts,OU=Administration,OU=Central,DC=domain,DC=co,DC=uk 。据我解释您的代码,您希望在该条目下方添加一个条目。但您必须提供 new 条目的 DN 作为 ldap_add 的第二个参数。但您需要提供新条目的baseDN。那已经存在了。否则你将无法向其中添加内容。

因此,您应该调用 ldap_add 之前调用如下所示的内容:

$dn = 'cn=' 。 $NewUser['cn'][0] 。 ','。 $dn;

它使用 baseDN 并在其前面添加当前用户的 cn。

希望有帮助

关于php - php 中的 ldap_add 返回 "already exists 68"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32645547/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com