PHP 7.1.17 Released

ldap_set_option

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ldap_set_optionSetze den Wert der gegebenen Option

Beschreibung

bool ldap_set_option ( resource $link_identifier , int $option , mixed $newval )

Setzt den Wert der angegebenen Option auf newval.

Parameter-Liste

link_identifier

Eine LDAP-Verbindungskennung, geliefert von ldap_connect().

option

Der Parameter option kann einer der folgenden Werte sein:

Option Typ Verfügbar seit
LDAP_OPT_DEREF integer  
LDAP_OPT_SIZELIMIT integer  
LDAP_OPT_TIMELIMIT integer  
LDAP_OPT_NETWORK_TIMEOUT integer PHP 5.3.0
LDAP_OPT_PROTOCOL_VERSION integer  
LDAP_OPT_ERROR_NUMBER integer  
LDAP_OPT_REFERRALS bool  
LDAP_OPT_RESTART bool  
LDAP_OPT_HOST_NAME string  
LDAP_OPT_ERROR_STRING string  
LDAP_OPT_DIAGNOSTIC_MESSAGE string  
LDAP_OPT_MATCHED_DN string  
LDAP_OPT_SERVER_CONTROLS array  
LDAP_OPT_CLIENT_CONTROLS array  
LDAP_OPT_X_KEEPALIVE_IDLE int PHP 7.1.0
LDAP_OPT_X_KEEPALIVE_PROBES int PHP 7.1.0
LDAP_OPT_X_KEEPALIVE_INTERVAL int PHP 7.1.0
LDAP_OPT_X_TLS_CACERTDIR string PHP 7.1.0
LDAP_OPT_X_TLS_CACERTFILE string PHP 7.1.0
LDAP_OPT_X_TLS_CERTFILE string PHP 7.1.0
LDAP_OPT_X_TLS_CIPHER_SUITE string PHP 7.1.0
LDAP_OPT_X_TLS_CRLCHECK integer PHP 7.1.0
LDAP_OPT_X_TLS_CRLFILE string PHP 7.1.0
LDAP_OPT_X_TLS_DHFILE string PHP 7.1.0
LDAP_OPT_X_TLS_KEYFILE string PHP 7.1.0
LDAP_OPT_X_TLS_PROTOCOL_MIN integer PHP 7.1.0
LDAP_OPT_X_TLS_RANDOM_FILE string PHP 7.1.0
LDAP_OPT_X_TLS_REQUIRE_CERT integer PHP 7.0.5

Die Optionen LDAP_OPT_SERVER_CONTROLS und LDAP_OPT_CLIENT_CONTROLS benötigen eine Kontrolliste, d.h. der Wert muss ein Array aus Kontrollen sein. Eine Kontrolle besteht aus einer oid, die die Kontrolle identifiziert, einem wahlweisen wert, und einem wahlweisen Kennzeichen für criticality. Bei PHP wird eine Kontrolle durch ein Array angegeben. Dieses Array enthält ein Element mit dem Schlüssel oid und einer Zeichenkette als Wert und zwei optionalen Elementen. Die optionalen Elemente sind Schlüssel wert mit einer Zeichenkette als Wert und dem Schlüssel iscritical mit einem booleschen Wert. Der vorgegebene Wert von iscritical ist FALSE, falls nicht angegeben. Siehe » draft-ietf-ldapext-ldap-c-api-xx.txt für Details. Ebenso ist das zweite Beispiel weiter unten zu konsultieren.

newval

Der neue Wert für die angegebene option.

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

Beispiele

Beispiel #1 Setzen der Protokollversion

// $ds ist eine gültige Verbindungs-Kennung für einen Verzeichnis-Server
if (ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3))
    echo "Verwenden von LDAPv3";
else
    echo "Kann das Protokoll nicht auf Version 3 setzen";

Beispiel #2 Setzen der Server Kontrollen

// $ds ist eine gültige Verbingund-Kennung für einen Verzeichnis-Server
// Kontrolle ohne Wert
$ctrl1 = array("oid" => "1.2.752.58.10.1", "iscritical" => true);
// iscritical hat den vorgegebenen Wert FALSE
$ctrl2 = array("oid" => "1.2.752.58.1.10", "value" => "magic");
// Versuch, beide Kontrollen zu setzen
if (!ldap_set_option($ds, LDAP_OPT_SERVER_CONTROLS, array($ctrl1, $ctrl2)))
    echo "Kann die Server Kontrollen nicht setzen";

Anmerkungen

Hinweis:

Diese Funktion steht nur zur Verfügung, wenn Sie OpenLDAP 2.x.x ODER Netscape Directory SDK x.x verwenden.

Siehe auch

add a note add a note

User Contributed Notes 7 notes

up
4
soulbros at yahoo dot com
16 years ago
As john.hallam@compaq.com above mentioned ,one  has to set option LDAP_OPT_PROTOCOL_VERSION=3
ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3);
to use the ldap_rename function.

However, the ldap_set_option() line has to be written immediately after ldap_connect() and before ldap_bind() statements.

Christos Soulios
up
4
hansfn at gmail dot com
11 years ago
Luckily you can turn on debugging before you open a connection:

  ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);

This way you at least can see in the logs if the connection fails...
up
2
technosophos
11 years ago
The following flags are valid integer values for the LDAP_OPT_DEREF (as taken from the documentation for ldap_read()):

LDAP_DEREF_NEVER (int 0) - (default) aliases are never dereferenced.

LDAP_DEREF_SEARCHING (int 1) - aliases should be dereferenced during the search but not when locating the base object of the search.

LDAP_DEREF_FINDING (int 2) - aliases should be dereferenced when locating the base object but not during the search.

LDAP_DEREF_ALWAYS (int 3) - aliases should be dereferenced always.

Example:
<?php
ldap_set_option
($ds, LDAP_OPT_DEREF, LDAP_DEREF_ALWAYS);
?>

These are defined in the draft C API (presumably from the original LDAP API). See draft-ietf-ldapext-ldap-c-api-xx.txt included in the OpenLDAP source code distribution.
up
0
badbo_5834 at hotmail dot com
4 years ago
I have the following code, but you do not rename the cn, that may be?

    $TheDN = "cn=Nombre,ou=Addressbook,dc=axia-ldap,dc=net";
    $newRDN = "cn=bill";
    $newParent = "ou=Addressbook,dc=axia-ldap,dc=net";
    ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3);
    $result = ldap_rename($ds, $TheDN, $newRDN, $newParent, TRUE);
up
0
john dot hallam at compaq dot com
16 years ago
To get this to work I had to set the LDAP version to 3 using ldap_set_option. Here is an example that might help:

$TheDN = "cn=john smith,ou=users,dc=acme,dc=com";
$newRDN = "cn=bill brown";
$newParent = "ou=users,dc=acme,dc=com";
ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3);
@$result = ldap_rename($ds, $TheDN, $newRDN, $newParent, TRUE);
up
-1
minusf at gmail dot com
12 years ago
it seems that ldap_set_option returns 1 for bogus ldap_connect -ions also.
ldap_connect always returns a resource (documented in the
comments of ldap_connect) so it is not possible to check if the
ldap server is there or alive or what.  and because ldap_set_option
must be between ldap_connect and ldap_bind, there seems to
be no sense in checking the return value.

it is a bit strange that ldap_bind is the first function which can
really check if a ldap resource is usable because it is the third
function in line to use when working with openldap.

<?php
$connect
= ldap_connect("whatever");
$set = ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
echo
$set;
?>
To Top