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

Posted

技术标签:

【中文标题】即使我编辑了 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? 【发布时间】:2012-02-08 05:29:01 【问题描述】:

在启用 LDAP 的情况下,我已经使用 WAMP 安装了很长一段时间,并且一切进展顺利。现在虽然我必须设置另一台机器,但由于某种原因我无法启用 LDAP。

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

extension = php_ldap.dll

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

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

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

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

编辑完整答案

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

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

    php.ini 中取消注释extension = php_ldap.dll 重要提示:通过检查phpinfo() 的输出,确保您正在编辑正确的php.ini 检查 php.ini 文件以获取扩展目录的位置 检查php_ldap.dll 是否位于该目录中 (我错过的步骤) 找到文件 libeay32.dllssleay32.dll 并将它们的目录添加到 Windows PATH 重新启动 Apache。如果启用了 LDAP,在phpinfo() 的输出中会有一个关于它的部分

【问题讨论】:

这里有一些提示:php.net/manual/en/ldap.installation.php。请注意,您需要添加另外两个 DLL libeay32.dll and ssleay32.dll。您可能还需要使用--with-ldap 进行编译 嗯...我现在无法访问机器,但我感觉这就是我需要的。我上面提到我将 php.ini 目录添加到 PATH,也许我误读了将扩展目录添加到 PATH 的内容。我可能在上次设置时将这两个 .dll 文件直接复制到 system32 中,所以当我检查该机器的 PATH 时我不会发现任何线索 @FrankFarmer 现在开始工作了!这两个文件位于php.ini 所在的同一目录中,但显然没有找到。我将该目录添加到 Windows PATH 并启用了 LDAP!在那之后,我再次检查了第一台机器(正在工作的机器),它们位于 PHP 的默认扩展文件夹中。因此,也许只需要将它们复制到那里,而不是使用 PATH 变量。我当时没想过要检查,但明天早上我会移动这些文件并重新启动。然后我会再次在这里发帖,只是为了涵盖所有内容。 @FrankFarmer 您的评论直接导致了解决方案,所以如果您想发布答案,我会接受它 当我看到 php.ini 文件时,这个 (extension = php_ldap.dll) 不存在,我只是添加了这一行并启用了 ldap。 【参考方案1】:

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

【讨论】:

【参考方案2】:

我按照这些说明操作,但仍然无法在我的 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,即可解决问题。希望这可以帮助其他人。

【讨论】:

【参考方案3】:
    检查您的 PHP 文件夹中的 libsasl.dll libeay32.dllssleay32.dll 如果没有libeay32.dllssleay32.dll,请从https://code.google.com/archive/p/openssl-for-windows/downloads下载 将它们复制到 Windows 中的 System32 文件夹 现在您可以在 phpinfo() 上看到 LDAP 部分。它对我有用。

我的环境 视窗 10 PHP 7.4.3 阿帕奇 2.4.41

【讨论】:

【参考方案4】:

我正在使用 phpstorm。如果找不到评论,只需在 php.ini 页面底部粘贴“extension = php_ldap.dll”。不客气

【讨论】:

以上是关于即使我编辑了 php.ini 并且 php_ldap.dll 在正确的位置,也无法启用 PHP LDAP?的主要内容,如果未能解决你的问题,请参考以下文章

php.ini mysqli.allow_persistent 即使在 php 重启后也不会关闭

即使更改了 php.ini 文件,文件也太大而无法上传到服务器

编辑我的 php.ini,但 phpmyadmin 仍然不会增加文件大小上传

在 wamp 中编辑 php 配置(php.ini)

php.ini - 路径错误?

即使在 php.ini 中使用 display_errors = On,PHP 也没有错误