直到5.4版本,当PHP从其源代码编译时,LDAP扩展程序被硬编码以在 c:\ openldap \ sysconf 文件夹中查找其证书。从5.5开始,这个' harcode'被称为%SYSCONFDIR%的环境变量替换。但是,无论我做什么,我都无法将LDAP扩展指向它之前的相同目录! :(
在PHP 5.4中,ldap_config.h
#define LDAP_SYSCONFDIR "c:\\openldap\\sysconf"
在PHP 5.5中,ldap_config.h
#define LDAP_SYSCONFDIR "%SYSCONFDIR%"
抱歉我的英语不好。 任何线索?感谢。
答案 0 :(得分:1)
我使用Sysinternals Process Explorer运行了跟踪,它显示php_ldap was
尝试打开文件C:\Apache24\%SYSCONFDIR%\ldap.conf
,其中%SYSCONFDIR%
按字面解释而不是从环境变量的内容扩展。
我在C:\Apache24
中安装了Apache,但显然确切路径将根据Apache文件夹的名称而有所不同。
在Apache安装的根文件夹中,创建一个名为%SYSCONFDIR%
的文件夹(字面意思!)并将ldap.conf
放在那里。这解决了我。
答案 1 :(得分:1)
下载最新版本的PHP 5.5。
这已在windows.php.net的PHP 5.5.4二进制文件中得到解决。 LDAP扩展在5.4中查找“ c:\ openldap \ sysconf \ ldap.conf ”。
答案 2 :(得分:0)
似乎它将由php团队在下一个版本中修复。 见https://bugs.php.net/bug.php?id=65642