Я пытаюсь подключить активный каталог или LDAP окна к приложению (GLPI), сделанному на PHP.
Параметры подключения:
Подключение к серверу:
$ds = ldap_connect($host, $port) // return true
@ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
@ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
@ldap_set_option($ds, LDAP_OPT_DEREF, $deref_options);
Свяжите соединение с сервером, пользователем и паролем
ldap_bind ($ds, $ login, $ password)
возвращает мне:
"Can not contact LDAP server"
Я хочу знать, что может случиться с этим сообщением об ошибке, поскольку в первом методе оно возвращает мне true, что означает, что если оно подключается к серверу.
RootDN Это нормально, и у него есть все разрешения, которые я использую.
Сервер по умолчанию в порядке, и я сделал ping и telnet.
Примечание: Я уже скачал LDAPExplorer и без проблем установил соединение.






Нравится ли отсутствующему: $ds = ldap_connect ..., как он в вашем коде?
Должно получиться что-то вроде:
$ds = ldap_connect($host, $port);
@ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
@ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
@ldap_set_option($ds, LDAP_OPT_DEREF, $deref_options);
ldap_bind ($ds, $login, $password)
ldap_connect подключает нет к серверу, как четко указано в документы. Он просто создает ресурс и проверяет, правдоподобны ли заданные значения. Фактическое соединение устанавливается с помощью первой команды, которая требует соединения с сервером. В этом случае ldap_bind.
Кстати: «Первый метод» не возвращает true, а возвращает дескриптор ресурса. Только когда вы передадите что-то абсолютно не поддающееся синтаксическому анализу, оно вернет false. Но никогдаtrue
Я бы рекомендовал использовать LDAP-URI вместо варианта $host, $port, поскольку PHP-библиотека должна делать это в противном случае внутренне. И это единственный способ, например, установить LDAPS-соединение.
вы должны использовать var_Dump($ds); вместо первого echo ldap_error($ds);, чтобы увидеть фактическое значение $ds. Чтобы получить дополнительную информацию об ошибке, вам может потребоваться взглянуть на php.net/manual/en/function.ldap-error.php#121881, который описывает способ извлечения дополнительной информации о последней ошибке.
Выполните var_dump( ldap_error($ds) ), верните мне строка (7) «Успех».
Выполните var_dump($ds), верните мне ресурс (65) типа (ссылка ldap)
Хорошо, решение моей проблемы - обновить GLPI версии 9.3.0 до 9.3.3.
Предложения:
Для пользователей, что с этим может случиться, проверьте сообщения, которые GLPI информирует об ожидающих установочных пакетах. Поэтому я выбрал обновление, и соединение заработало без проблем.
Для пользователей, которые не могут обновить версию, убедитесь, что пакеты apache ожидают установки или обновления, также в процессе установки в настройке, будьте очень осторожны, устанавливая весь список, который кажется ожидающим.
Чтобы исправить некоторые ошибки, установив версию 9.3.3:
chown -R apache: apache glpi / files
chmod -R 755 glpi / files
chown -R apache: apache config
chmod -R 755 glpi / config
также:
setsebool -P httpd_can_network_connect_db 1
Спасибо.
Я запускаю
echo ldap_error($ds);, и он возвращает true, затем я запускаюldap_bind($ds, $login, $password);, и он возвращает false, а затемldap_error($ds)возвращает «Невозможно связаться с сервером LDAP». Я также пытаюсь поместить в метод ip сервера, но получаю тот же результат.