在PHP 5.5.x(Windows)中配置LDAP证书目录


Configure LDAP certificate dir in PHP 5.5.x (Windows)

在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%"

抱歉我英语不好。有线索吗?谢谢

下载最新版本的PHP 5.5。

这已经在windows.PHP.net的PHP 5.5.4二进制文件中得到了解决。LDAP扩展查找"c:''openldap''sysconf''LDAP.conf",就像在5.4中所做的那样。

我用Sysinternals Process Explorer运行了一个跟踪,发现php_ldap was试图打开文件C:'Apache24'%SYSCONFDIR%'ldap.conf,其中%SYSCONFDIR%是从字面上解释的,而不是从环境变量的内容展开的。我在C:'Apache24中安装了Apache,但很明显,确切的路径会因Apache文件夹的名称而异。在Apache安装的根文件夹中,创建一个名为%SYSCONFDIR%(字面意思是!)的文件夹,并将ldap.conf放在其中。这为我解决了问题。

php团队似乎会在下一个版本中修复它。看见https://bugs.php.net/bug.php?id=65642