即使我已经编辑了PHP.ini并且PHP_LDAP.dll在正确的位置,也无法启用PHP LDAP


Unable to enable PHP LDAP even though I have edited php.ini and php_ldap.dll is in the right place?

我已经使用WAMP安装很长一段时间了,现在启用了LDAP,一切都很顺利。现在,尽管我必须设置另一台机器,但由于某些原因,我无法启用LDAP。

我检查了phpinfo()的输出,LDAP部分不在那里。我编辑了php.ini以取消注释行:

extension = php_ldap.dll

我还检查了正在搜索的文件路径的扩展名,并且文件php_ldap.dll位于正确的位置。

我很肯定我正在编辑正确的php.ini文件,因为我检查了phpinfo()显示的文件路径,而且我能够成功启用/禁用其他扩展名。

每次更改后,我都会重新启动Apache。

在谷歌上搜索时,我发现的唯一解决方案是上面的那些,再加上一两次提到编辑Windows PATH变量以包括php.ini的路径?尽管它对我来说没有意义,但我还是尝试了它(因为我已经知道php.ini正在被解析)。我还检查了我以前在另一台机器上的安装,从我所看到的情况来看,我从未向该机器上的PATH添加任何PHP目录

编辑完整答案

弗兰克下面的回答让我找到了解决方案,所以我想我现在应该整合所有内容。

要在WAMP服务器上启用LDAP支持:

  1. php.ini中取消注释extension = php_ldap.dll
  2. 重要信息:通过检查phpinfo()的输出,确保您正在编辑正确的php.ini
  3. 检查php.ini文件中扩展目录的位置
  4. 检查php_ldap.dll是否位于该目录中
  5. 我错过的步骤)找到文件libeay32.dllssleay32.dll,并将其目录添加到Windows路径
  6. 重新启动Apache。如果启用了LDAP,则phpinfo()的输出中将有一个关于它的部分

这里有一些提示:http://php.net/manual/en/ldap.installation.php。请注意,您需要添加另外两个DLL libeay32.dllssleay32.dll。您可能还需要使用--with-ldap 编译

我遵循了这些说明,但仍然无法在phpinfo()中加载LDAP。Apache日志在启动时显示以下非致命消息:######/php5.4.16/ext/php_ldap.dll - The specified module could not be found. in Unknown on line 0

最后,我再次查看了phpinfo(),发现使用的是系统变量PATH,而不是我的用户变量PATH,并且它没有包含PHP根目录和PHP扩展文件夹的正确路径。只需在####'php'php5.4.16;####'php'php5.4.16'ext;中添加它们并重新启动Apache,就解决了问题。希望这能帮助其他人。

  1. 查看PHP文件夹中的libsasl.dlllibreay32.dllssleay32.dll
  2. 如果不存在libeay32.dllssleay32.dll,请从下载https://code.google.com/archive/p/openssl-for-windows/downloads
  3. 将它们复制到Windows中的System32文件夹
  4. 现在您可以看到关于phpinfo()的LDAP部分。它对我有效

我的环境
Windows 10
PHP 7.4.3
Apache 2.4.41

im使用phpstorm。如果找不到注释,只需在php.ini页面底部粘贴"extension=phpldap.dll"即可。欢迎