PHP 7 Как узнать, был ли PHP собран с поддержкой LDAP? - PullRequest
0 голосов
/ 17 января 2020

Использование Linux, Apache 2.4, PHP 7.2

Я обновляю производственный сайт PHP, в котором ужасно небезопасный процесс аутентификации LDAP. Тем не менее, попытка вызова ldap_connect () дает мне неопределенную ошибку функции. Итак, на мой взгляд, есть две возможности:

  1. PHP не был создан с поддержкой LDAP (с использованием --with-ldap [= DIR])

  2. PHP был создан с поддержкой LDAP, но расширение не установлено

Итак, как мне определить, в чем дело?

Для дополнительно, у phpinfo () нет секции ldap. Однако extension_loaded('ldap'); возвращает true.

Ответы [ 2 ]

0 голосов
/ 17 января 2020

«неопределенная ошибка функции» довольно ясно говорит о том, что у вас нет поддержки LDAP. Он либо не был встроен статически, либо был построен динамически, но не был загружен. В выводе phpinfo он должен показать, какой файл ini был проанализирован. Отредактируйте этот файл и найдите директиву extension_dir. В этом списке будет указан каталог, в котором установлены расширения dyanmi c. Список файлов в этом каталоге. Если файла ldap.so нет, значит, у вас вообще нет встроенного LDAP, и вам нужно будет установить / собрать его самостоятельно. Если такой файл существует, вам просто нужно загрузить его, добавив (или раскомментировав) extension = ldap.so в INI-файл, а затем перезапустив Apache.

[ Обновление ] На основе При редактировании два оператора "ldap_connect () дают мне неопределенную функцию" и "extension_loaded ('ldap'); возвращает true" кажутся противоречивыми). Пожалуйста, отправьте фактический код и фактическое сообщение об ошибке.

0 голосов
/ 17 января 2020

Вы можете попробовать и проверить это с помощью extension_loaded () , например:

$builtWithLdap = extension_loaded('ldap');

или альтернативно, как лом, просто проверьте, существует ли одна из функций :

$builtWithLdap = function_exists('ldap_add');

Редактировать: Перечитывая ваш вопрос, я просто понимаю, что вы на самом деле хотите узнать, можете ли вы различить guish, был ли он построен с поддержкой, но не загружен или построен без поддержки. Насколько я знаю, во время выполнения это те же самые вещи, что и PHP, просто ничего о них не знаю. Извините за путаницу.

...