即使我编辑了 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.dll
和 ssleay32.dll
并将它们的目录添加到 Windows PATH
重新启动 Apache。如果启用了 LDAP,在phpinfo()
的输出中会有一个关于它的部分
【问题讨论】:
这里有一些提示:php.net/manual/en/ldap.installation.php。请注意,您需要添加另外两个 DLLlibeay32.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.dll
和 ssleay32.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.dll、ssleay32.dll
如果没有libeay32.dll、ssleay32.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 文件,文件也太大而无法上传到服务器