Be aware! Operation not allowed on non-leaf.(PHP 4, PHP 5, PHP 7, PHP 8)
ldap_delete — Удаляет запись из каталога LDAP
Функция удаляет конкретную запись из LDAP-каталога.
ldapЭкземпляр класса LDAP\Connection, который возвращает функция ldap_connect().
dnУникальное имя LDAP-записи.
controlsМассив управляющих объектов протокола LDAP для отправки в запросе.
   Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.
  
| Версия | Описание | 
|---|---|
| 8.1.0 | Параметр ldapтеперь ожидает экземпляр класса LDAP\Connection;
  раньше параметр ждал ресурс (resource)ldap link. | 
| 8.0.0 | Параметр controlsтеперь допускает значение null;
  раньше значение по умолчанию равнялось[]. | 
| 7.3.0 | Добавлена поддержка параметра controls. | 
Useful function to delete dn entries recursively
bool myldap_delete ( resource ds, string dn, bool recursive)
Returns TRUE on success, FALSE on failure
recursive is by default FALSE (same behaviour as ldap_delete)
function myldap_delete($ds,$dn,$recursive=false){
    if($recursive == false){
        return(ldap_delete($ds,$dn));
    }else{
        //searching for sub entries
        $sr=ldap_list($ds,$dn,"ObjectClass=*",array(""));
        $info = ldap_get_entries($ds, $sr);
        for($i=0;$i<$info['count'];$i++){
            //deleting recursively sub entries
            $result=myldap_delete($ds,$info[$i]['dn'],$recursive);
            if(!$result){
                //return result code, if delete fails
                return($result);
            }
        }
        return(ldap_delete($ds,$dn));
    }
}