【问题标题】:Updating user fields in Active Directory with ldap_mod_replace使用 ldap_mod_replace 更新 Active Directory 中的用户字段
【发布时间】:2015-04-23 17:25:18
【问题描述】:

我正在尝试为 Active Directory 中的用户更新移动字段,但我不断收到以下错误。我已经尝试解决这个问题好几个小时了。这可能很简单。

警告:ldap_mod_replace():修改:语法无效 /var/www/php_builders/admin/user_update/user_update_action.php 上线 183

当我输出数组时,会显示手机号码。它不是空的。

ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
$adconn = ldap_connect("ldap://earth.example.com") or die("Couldn't connect to AD!");
$set = ldap_set_option($adconn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_get_option($adconn, LDAP_OPT_PROTOCOL_VERSION, $value); 
$DN = 'CN=itcoopadmin,CN=Users,DC=example,DC=com';
$ldap_bind = ldap_bind($adconn, $DN, "**********");
$dn = trim($_POST['dn']);
$mobile = trim($_POST['mobile']);

if(!empty($mobile)) {
    $AD_mobile = AD_format($mobile);
    $DB_mobile = DB_format($mobile);
    $attributes['mobile'] = $AD_mobile;
} else {
    $DELETEattrs["mobile"] = array();
    $DELETEattrs = array();
}


$replace=ldap_mod_replace($adconn, $dn, $attributes); // Line 183, where the error is getting triggered

$disconnect = ldap_unbind($adconn);

【问题讨论】:

  • 您的用户是否已经存在移动字段?如果没有,你需要做ldap_mod_add
  • 移动字段已经存在
  • 我建议您输入if($ldap_bind){...},然后确保问题不存在
  • 这似乎没有任何区别:(
  • 我唯一剩下的东西...我们有$replace = ldap_mod_replace($con, "uid=$uid ou=people...", $attr); 我想知道在设置时是否有问题以这种方式传递dn?如果您的组织没有太多不同的ou,也许这对你们有用?此外,我们将它用于 RHEL,也可能会有所作为。

标签: php ldap ldap-query


【解决方案1】:

AFAIK 属性必须以数组形式给出。所以我建议你试试这个:

$attributes['mobile'] = array($AD_mobile);

希望有帮助

【讨论】:

    【解决方案2】:

    如果有人还在寻找,请尝试:

    $attributes['mobile'][0] = $AD_mobile;
    

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多