当 macOS 上的 运行 PHP 7.3 或更高版本时,有什么方法可以在 MAMP 上启用 LDAP 支持吗?

Is there any way to enable LDAP support on MAMP when running PHP 7.3 or higher on macOS?

我在 macOS Catalina (10.15.6) 上使用 MAMP 5.5 (383) 进行一般 PHP 相关开发。由于各种原因,我的一些项目需要 LDAP 连接。

我的流程使用 MAMP 运行良好,但最近我注意到,如果我从 PHP 任何一个应用程序中可用的版本切换到 PHP 7.2 到 PHP 7.3 或更高版本, 所有 LDAP 支持停止;我收到这样的错误:

[30-Jul-2020 23:59:14 America/New_York] PHP Fatal error:  Uncaught Error: Call to undefined function ldap_connect() in /Users/Jake/htdocs/ldap_test.php:3
Stack trace:
#0 {main}

并且该文件中唯一的命令只是一个测试 ldap_connect() 命令。

在 MAMP 中,当我执行 phpinfo() 调用时,它是 运行 PHP 7.3.8 即使在配置命令中,我也看不到 LDAP 引用。但是当我切换到 PHP 7.2.21 时,我在配置命令中看到 --with-ldap 以及这个:

这是为什么?

我尝试升级到具有 PHP 7.3 和 PHP 7.4 的 MAMP 5.7,但我得到了相同的结果;不支持 LDAP。

像这样的软件包支持 OpenLDAP 的方式是否发生了什么?我发现 this Homebrew related discussion which states the following and refers to this reported issue in an official PHP bug report:

“I can patch PHP 7.2 and older to use system LDAP again, but PHP 7.3 will require new symbols that only openldap exposes.”

这是否意味着 macOS 中的 LDAP 支持对于 PHP 7.3 及更高版本已经失效,除非有 PHP 代码的补丁或在 OpenLDAP 的 macOS 实现中的另一端?

我也使用 Ubuntu 和 CentOS,我可以通过那里的软件包安装程序轻松启用 LDAP 支持。但这在使用 MAMP 进行桌面开发时帮助不大。


寻找以 MAMP 应用程序为中心的解决方案,并希望避免 Homebrew 或其他我在 macOS 上从头开始有效构建 M(acOS)AMP 服务器的设置。

从 MAMP 6.3 开始,这个问题似乎已经解决了

MAMP 6.3 及更高版本附带的 PHP 版本支持 LDAP。

决定检查更新版本的 MAMP — 因为 PHP 8 迫在眉睫并且坚持使用 PHP 7.2 不再是一个真正的选择 — 我下载了 MAMP 6.3,它附带了 PHP 7.4.12 和 PHP 8.0.0 安装。

不用说别的……这里 PHP 的两个版本都内置了 LDAP 支持!通过使用基本的 ldap_connect 命令以及我在 PHP 这些新版本中开发的一些小应用程序进行确认,一切都很好!

所以 MAMP 的 PHP 7.3 周期似乎有一个奇怪的“无 LDAP”信号。我建议任何想要在他们的代码中前进的人,只需下载 MAMP 6.3 并至少使用 PHP 7.4,你应该是可靠的。

MAMP 6.3 中包含的 LDAP 供应商版本是20448,供需要了解的任何人使用。