ldap_set_option

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

ldap_set_optionУстановить значение данной опции

Описание

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

Устанавливает значение указанной опции в newval.

Список параметров

link_identifier

Идентификатор ссылки LDAP, возвращенный ldap_connect().

option

Параметр option может быть одним из:

Опция Тип Доступна с
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_MATCHED_DN string  
LDAP_OPT_SERVER_CONTROLS array  
LDAP_OPT_CLIENT_CONTROLS array  

LDAP_OPT_SERVER_CONTROLS и LDAP_OPT_CLIENT_CONTROLS требуют список элементов управления. Это означает, что значение должно быть массивом элементов управления. Элемент управления состоит из oid, определяющего элемент управления, опционального значения, и дополнительного флага для критичности. В PHP элемент управления задается массивом, содержащим элемент с ключом oid и строковым значением, и двумя необязательными элементами. Необязательные элементы являются ключом value со строковым значением и ключом iscritical с логическим значением. iscritical по умолчанию устанавливается в FALSE, если не указан. Для более подробной информации смотрите » draft-ietf-ldapext-ldap-c-api-xx.txt. Смотрите также второй пример, расположенный ниже.

newval

Новое значение для указанной option (опции).

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Устанавливает версию протокола

<?php
// $ds является действительным идентификатором связи с LDAP-сервером
if (ldap_set_option($dsLDAP_OPT_PROTOCOL_VERSION3)) {
    echo 
"Используется LDAPv3";
} else {
    echo 
"Не удалось установить версию протокола в 3";
}
?>

Пример #2 Устанавливает управление сервером

<?php
// $ds является действительным идентификатором связи с LDAP-сервером
// элемент управления с отсутствующим значением
$ctrl1 = array("oid" => "1.2.752.58.10.1""iscritical" => true);
// iscritical по умолчанию FALSE
$ctrl2 = array("oid" => "1.2.752.58.1.10""value" => "magic");
// попытка установить оба элемента управления
if (!ldap_set_option($dsLDAP_OPT_SERVER_CONTROLS, array($ctrl1$ctrl2))) {
    echo 
"Не удалось установить серверные элементы управления";
}
?>

Примечания

Замечание:

Эта функция доступна только, когда используется OpenLDAP 2.x.x или Netscape Directory SDK x.x.

Смотрите также

  • ldap_get_option() - Получить текущее значение данной опции

Коментарии

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);
2002-01-28 12:00:28
http://php5.kiev.ua/manual/ru/function.ldap-set-option.html
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
2002-02-26 17:56:28
http://php5.kiev.ua/manual/ru/function.ldap-set-option.html
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($connectLDAP_OPT_PROTOCOL_VERSION3);
echo 
$set;
?>
2005-10-31 03:59:15
http://php5.kiev.ua/manual/ru/function.ldap-set-option.html
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...
2006-05-23 07:23:31
http://php5.kiev.ua/manual/ru/function.ldap-set-option.html
Автор:
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
($dsLDAP_OPT_DEREFLDAP_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.
2007-03-07 16:00:17
http://php5.kiev.ua/manual/ru/function.ldap-set-option.html
Автор:
LDAP options description

http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=%2Fapis%2Fldap_set_option.htm
2010-11-19 03:56:01
http://php5.kiev.ua/manual/ru/function.ldap-set-option.html
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);
2013-12-10 22:02:21
http://php5.kiev.ua/manual/ru/function.ldap-set-option.html
Автор:
PHP 7.1 added support for configuring the LDAP CA/Cert environment directly, rather than relying on the environment variables. I noticed that a lot of people are having trouble getting this to work.

The correct way is:
$ds=ldap_connect("ldap.google.com"); 
ldap_set_option(NULL, LDAP_OPT_X_TLS_CERTFILE, "/path/file.crt");
ldap_set_option(NULL, LDAP_OPT_X_TLS_KEYFILE, "/path/file.key");
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
ldap_start_tls($ds);
...
ldap_close($ds);
2020-01-11 23:31:21
http://php5.kiev.ua/manual/ru/function.ldap-set-option.html
If you want to disable the TLS cert check (e.g. because you are doing an SSH port-forward, and ldaps is pointing to localhost), then you must invoke:

ldap_set_option(NULL, LDAP_OPT_X_TLS_REQUIRE_CERT,0)
*before* calling ldap_connect()

If you try: 

$ds = ldap_connect(...)
ldap_set_option($ds, LDAP_OPT_X_TLS_REQUIRE_CERT,0)

then the option won't actually take effect, and the certificate will be checked anyway, and a TLS failure will happen..
2022-07-27 20:41:01
http://php5.kiev.ua/manual/ru/function.ldap-set-option.html

    Поддержать сайт на родительском проекте КГБ