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(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
ldap_get_option — Получить текущее значение данной опции
   Устанавливает value в значение указанной опции.
  
ldapЭкземпляр класса LDAP\Connection, который возвращает функция ldap_connect().
option
       Опция option может быть одной из:
       
valueБудет установлен в значение опции.
   Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.
  
| Версия | Описание | 
|---|---|
| 8.1.0 | Параметр ldapтеперь ожидает экземпляр класса LDAP\Connection;
  раньше параметр ждал ресурс (resource)ldap link. | 
Пример #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.
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_STRINGHere 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.';
}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);