ldap_get_option

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

ldap_get_option — 指定したオプションの現在の値を得る

説明

function ldap_get_option(?LDAP\Connection $ldap, int $option, array|string|int &$value = null): bool

value を、指定したオプションの値として設定します。

パラメータ

ldap

特定の接続に対してオプションを取得する場合は、 ldap_connect() が返す、 LDAP\Connection クラスのインスタンス。 グローバルなオプションを取得する場合は、 null を指定します。

option

パラメータ option は以下のいずれかとなります。

オプション 型 利用可能になったバージョン
LDAP_OPT_DEREF int  
LDAP_OPT_SIZELIMIT int  
LDAP_OPT_TIMELIMIT int  
LDAP_OPT_NETWORK_TIMEOUT int  
LDAP_OPT_PROTOCOL_VERSION int  
LDAP_OPT_ERROR_NUMBER int  
LDAP_OPT_DIAGNOSTIC_MESSAGE string  
LDAP_OPT_REFERRALS int  
LDAP_OPT_RESTART int  
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_X_KEEPALIVE_IDLE int 7.1
LDAP_OPT_X_KEEPALIVE_PROBES int 7.1
LDAP_OPT_X_KEEPALIVE_INTERVAL int 7.1
LDAP_OPT_X_TLS_CACERTDIR string 7.1
LDAP_OPT_X_TLS_CACERTFILE string 7.1
LDAP_OPT_X_TLS_CERTFILE string 7.1
LDAP_OPT_X_TLS_CIPHER_SUITE string 7.1
LDAP_OPT_X_TLS_CRLCHECK int 7.1
LDAP_OPT_X_TLS_CRL_NONE int 7.1
LDAP_OPT_X_TLS_CRL_PEER int 7.1
LDAP_OPT_X_TLS_CRL_ALL int 7.1
LDAP_OPT_X_TLS_CRLFILE string 7.1
LDAP_OPT_X_TLS_DHFILE string 7.1
LDAP_OPT_X_TLS_KEYFILE string 7.1
LDAP_OPT_X_TLS_PACKAGE string 7.1
LDAP_OPT_X_TLS_PROTOCOL_MIN int 7.1
LDAP_OPT_X_TLS_PROTOCOL_MAX int 8.4
LDAP_OPT_X_TLS_RANDOM_FILE string 7.1
LDAP_OPT_X_TLS_REQUIRE_CERT int  
value

これが、オプションの値として設定されます。

戻り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
8.5.0 ldap は、nullable になりました。 無効な option を渡すと、 ValueError がスローされるようになりました。
8.1.0 引数 ldap は、LDAP\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、有効な ldap link resource を期待していました。

例

例1 プロトコルのバージョンを調べる

<?php
// $ds はディレクトリサーバーへの有効な LDAP\Connection のインスタンスです
if (ldap_get_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version)) {
    echo "使用中のプロトコルのバージョン: $version\n";
} else {
    echo "プロトコルのバージョンを決定することができません\n";
}
?>

注意

注意:

この関数は、OpenLDAP 2.x.x または Netscape Directory SDK x.x を使用した場合にのみ利用可能です。

参考

+add a note

User Contributed Notes 3 notes

up
9
Anonymous
10 years ago
Following on from Jeremy S's example. 
Instead of defining LDAP_OPT_DIAGNOSTIC_MESSAGE as 0x32 then using it, you can just use the option already defined as that value :)

LDAP_OPT_ERROR_STRING
up
6
Jeremy S
13 years ago
Here is how to tell if an Active Directory user account expired:

define('LDAP_OPT_DIAGNOSTIC_MESSAGE', 0x0032);

ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);

$bind = ldap_bind($conn, $user, $pass);

ldap_get_option($conn, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error);

if (!empty($extended_error))
{
    $errno = explode(',', $extended_error)[2];
    $errno = explode(' ', $errno)[2];
    $errno = intval($errno);

    if ($errno == 532)
        $err = 'Unable to login: Password expired.';
}
up
0
Maarten
6 years ago
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);