2013-08-24 4 views
1

До версии 5.4, когда PHP был скомпилирован из его источника, расширение LDAP было жестко закодировано для поиска его сертификатов в папке c: \ openldap \ sysconf. Начиная с версии 5.5, этот «аркод» заменялся переменной среды, называемой% SYSCONFDIR%. Однако я не могу сделать точку расширения LDAP той же, что и раньше, независимо от того, что я делаю! :(Настройка сертификата LDAP сертификата в PHP 5.5.x (Windows)

В PHP 5.4, ldap_config.h

#define LDAP_SYSCONFDIR "c:\\openldap\\sysconf" 

В PHP 5.5, ldap_config.h

#define LDAP_SYSCONFDIR "%SYSCONFDIR%" 

Извините за мой плохой английский. Любой ключ? Спасибо.

+0

У меня такая же проблема здесь, +1! – Mark

ответ

1

Загрузить последнюю версию PHP 5.5.

Это было разрешено в двоичных файлах PHP 5.5.4 от windows.php.net. Расширение LDAP ищет «c: \ openldap \ sysconf \ ldap.conf», как это было сделано в 5.4.

1

Я провел след с Sysinternals Process Explorer и обнаружил, что php_ldap was пытается открыть файл C:\Apache24\%SYSCONFDIR%\ldap.conf, где %SYSCONFDIR% интерпретируется l итеративно и не расширяется из содержимого переменной среды. У меня установлен Apache в C:\Apache24, но, очевидно, точный путь будет зависеть от имени вашей папки Apache. В корневой папке вашей установки Apache создайте папку с именем %SYSCONFDIR% (буквально!) И разместите там ldap.conf. Это решило это для меня.

+1

К сожалению, без абсолютного местоположения вы останетесь создавать эти папки в любом каталоге, где PHP может использовать LDAP, как описано здесь: http://unprotect-excel-sheet.com/phpldapfix.html – Mark

+0

Даже если я отредактирую 'ldap_config.h' и вручную замените ''% SYSCONFDIR% '' на '' c: \\ openldap \\ sysconf "', как это было в php 5.4 и перекомпилировать php, обходной путь не работает. Он по-прежнему ищет 'C: \ Apache24 \% SYSCONFDIR%' dir буквально. – vbsessa