我总是得到这个错误
服务器不愿意执行
我的代码是下一个:
echo "Checking ...";
$username = $_POST["username"];
$passwd = $_POST["passwd"];
$host = 'myhost.co.uk';
$port = 389;
$dn = 'uid='.$username.',cn=nssproxy,ou=users,dc=co,dc=uk';
// conexion a ldap
$conn = ldap_connect( "ldap://".$host.":389") ;
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
// match de usuario y password
$bind = ldap_bind( $conn, $dn, $password );
if ($bind){
echo "OK";
}
else {
echo "NO OK";
}
echo ldap_error($conn);
为什么我有这个错误?我总是在测试任何用户,这个脚本返回相同的错误。
提前致谢。
答案 0 :(得分:4)
所以我搜索了Google Server is unwilling to perform
,第一个结果是:
C.1.4。 ldap_ *:服务器不愿意执行
如果持有目标条目的后端不支持给定操作,slapd将返回不愿执行错误。
密码后端只愿意执行搜索。它将返回不愿意执行所有其他操作的错误。
shell后端是可配置的,可能支持有限的操作子集。检查是否存在其他错误,指示目录服务器所需的资源不足。即你可能有一个完整的磁盘等
ldap_mod_replace() [function.ldap-mod-replace]: Modify: Server is unwilling to perform也有一些要求
答案 1 :(得分:0)
一种可能是我做的...我错误地配置了/etc/ldap.conf
,并在要放入binddn
的位置添加了rootbinddn
,这导致了此消息。
答案 2 :(得分:0)
我遇到了这个错误。 Windows Server 2019上IP为10.0.0.14的虚拟机上的Ldap。
我成功连接并绑定,但是在ldap_add()时会发生此错误。
我的解决方案是检查要保存的$ record数组参数。
我这套属性对我有用:
$r = ldap_add($this->LdapConn, 'CN=user 3,'.$this->Branch, array(
'cn' => 'user 3',
'name' => 'test',
'sn' => 'asd',
'instanceType' => '4',
'objectCategory'=> 'CN=Person,CN=Schema,CN=Configuration,DC=test-domain,DC=com',
'mail' => 'mai222222l@mail2.com',
'objectclass'=>array(
'top',
'user',
'person',
'organizationalPerson'
)
));
请注意,ldap_add()的第二个参数是条目的路径(dn),这可能会导致问题。
路径(dn)必须是当前分支+条目
对我来说,当前分支为'CN = Users,DC = test-domain,DC = com'和完整路径均值dn =“ CN = user 3,CN = Users,DC = test-domain,DC = com” < / p>
请注意,第一部分cn = user 3必须与波纹管阵列中的相同。