Tôi gặp phải các lỗi truy cập không đủ bằng cách sử dụng ldap_modify với OpenLDAP 2.4.32 và PHP 5.4.6.PHP ldap_modify Không đủ quyền truy cập
Chức năng php mà là cho các lỗi như sau:
function set_user($dn, $password, $data)
{
/* This function sets the users infomation */
// Get Configuration Items
$ldapServer = $this->config->item('ldapServer');
$ldapDCRoot = $this->config->item('ldapDCRoot');
// Connect to LDAP
$ldapConnection = ldap_connect($ldapServer);
if($ldapConnection)
{
$r = ldap_bind($ldapConnection, $dn, $password);
if ($r)
{
// Bind completed successfully
$r = ldap_modify($ldapConnection, $dn, $data);
return True;
}
die("Unsuccessful Bind");
}
die("Can't connect to LDAP");
}
Các $ dn là đầy đủ các DN của người sử dụng cố gắng để thay đổi thông tin của họ cùng với mật khẩu của họ. Và $ data là các giá trị mà chúng đang cập nhật, ngay bây giờ dữ liệu chỉ chứa số điện thoại để thay đổi $ data ['mobile'] = "newPhoneNumber". Điều này tất cả dường như được làm việc ngoại trừ thực tế các dữ liệu không bao giờ thực sự được viết.
Tệp openldap được bao gồm bên dưới vì bạn có thể thấy ACL nói rằng tôi có thể ghi vào đó.
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/collective.schema
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
TLSCertificateFile /etc/pki/tls/certs/slapd.pem
TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem
access to *
by self write
by users read
by anonymous auth
database bdb
suffix "dc=example,dc=com"
checkpoint 1024 15
rootdn "cn=manager,dc=example,dc=com"
rootpw REDACTED
directory /var/lib/ldap
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
Câu hỏi đặt ra là tại sao PHP không thể cập nhật giá trị và thay vào đó nhận được lỗi truy cập không đủ?
Trước khi cuộc gọi của bạn để ldap_connect(), hãy thử 'ldap_set_option (NULL, LDAP_OPT_DEBUG_LEVEL, 7); 'mà sẽ đổ một loạt các kết xuất debug để Apache log lỗi toàn cầu (nó _will not_ đổ vào một vhost cụ thể đăng nhập hoặc vào cài đặt 'error_log' của bạn.) – miken32