1

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

对不起,我的英语不好。有什么线索吗?谢谢。

4

3 回答 3

1

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

于 2013-08-27T12:20:58.930 回答
1

下载最新版本的 PHP 5.5。

这已在 windows.php.net 的 PHP 5.5.4 二进制文件中得到解决。LDAP 扩展查找“ c:\openldap\sysconf\ldap.conf ”,就像它在 5.4 中所做的那样。

于 2013-09-25T12:08:26.833 回答
0

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

于 2013-09-16T01:09:25.630 回答