Подключите активный каталог или LDAP к PHP

Я пытаюсь подключить активный каталог или 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 и без проблем установил соединение.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
1 038
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Нравится ли отсутствующему: $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-соединение.

Я запускаю echo ldap_error($ds);, и он возвращает true, затем я запускаю ldap_bind($ds, $login, $password);, и он возвращает false, а затем ldap_error($ds) возвращает «Невозможно связаться с сервером LDAP». Я также пытаюсь поместить в метод ip сервера, но получаю тот же результат.

Dehost 11.12.2018 20:55

вы должны использовать var_Dump($ds); вместо первого echo ldap_error($ds);, чтобы увидеть фактическое значение $ds. Чтобы получить дополнительную информацию об ошибке, вам может потребоваться взглянуть на php.net/manual/en/function.ldap-error.php#121881, который описывает способ извлечения дополнительной информации о последней ошибке.

heiglandreas 12.12.2018 15:28

Выполните var_dump( ldap_error($ds) ), верните мне строка (7) «Успех».

Dehost 12.12.2018 17:23

Выполните var_dump($ds), верните мне ресурс (65) типа (ссылка ldap)

Dehost 12.12.2018 17:24
Ответ принят как подходящий

Хорошо, решение моей проблемы - обновить 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

Спасибо.

Другие вопросы по теме