Проблемы с PHP ldap_connect()

Я пытаюсь заставить ldap_connect работать правильно. Он будет работать нормально через CLI, но не тогда, когда я открою свой php файл через браузер.

Вот то, что я считаю соответствующими деталями:

  • Сообщение об ошибке: Неустранимая ошибка: вызов неопределенной функции ldap_connect() в F:\Websites\ldap.php в строке 4
  • ОС: Windows Server 2008 R2 x64
  • Каталог PHP: C: \ Program Files (x86) \ PHP
  • libeay32.dll и ssleay32.dll были добавлены в C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin и C:\Windows\System32. Они были скопированы из C:\Program Files (x86)\PHP.

Строки добавлены в httpd.conf:

  • LoadModule php5_module "C: / Program Files (x86) /PHP/php5apache2_2.dll"
  • Приложение AddType / x-httpd-php.php
  • PHPIniDir "C: / Program Files (x86) / PHP"

Вещи изменились в php.ini:

  • extension_dir = "C: / Program Files (x86) / PHP / ext" (путь задан)
  • extension = php_ldap.dll (не комментирует эту строку)

Я дергаю себя за волосы, поэтому я более чем счастлив попробовать то, что люди предложат.

2 ответа

В вашей установке PHP используются два разных файла ini - один при запуске из командной строки, а другой - при запуске через Apache. Об этом свидетельствует тот факт, что он работает из интерфейса командной строки, но не в браузере.

Вы можете найти пути к двум файлам, используя phpinfo() (в браузере) и передавая -i флаг для php из командной строки. В верхней части обоих наборов вы найдете путь к используемому INI-файлу, и я был бы очень удивлен, если бы они были идентичны. Из командной строки вы можете получить более подробную информацию, передав --ini флаг.

Тот факт, что вы получаете Call to undefined function ldap_connect() может означать только то, что расширение LDAP не было загружено, и это может быть верно только через Apache, но не через CLI, если они используют два разных файла ini.

Теперь я чувствую себя глупо. Проблема была с добавлением моего каталога PHP в переменную окружения PATH. Я не уверен на 100%, почему это решило проблему, но в итоге это и произошло. Спасибо за помощь, ребята!

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