代码之家  ›  专栏  ›  技术社区  ›  Giacomo1968

在macOS上运行PHP 7.3或更高版本时,有没有办法在MAMP上启用LDAP支持?

  •  0
  • Giacomo1968  · 技术社区  · 4 年前

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

    我的过程使用MAMP运行良好,但最近我注意到,如果我从PHP 7.2或更高版本的应用程序中的任何PHP版本切换到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时,我甚至在configure命令中也没有看到LDAP引用。但是当我切换到PHP 7.2.21时,我看到 --with-ldap 在configure命令中以及以下命令中:

    • LDAP支持 :已启用
    • RCS版本 :美元Id:3839f871a91c293a52322c63329c68db23a0290a$
    • 链接总数 :0/无限制
    • API版本 : 3001
    • 厂商名称 :OpenLDAP
    • 供应商版本 : 20428

    这是为什么?

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

    像这样的软件包中支持OpenLDAP的方式是否发生了什么变化?我发现 this Homebrew related discussion 其中陈述了以下内容,并引用了此报告的问题 in an official PHP bug report :

    我可以修补PHP 7.2及更早版本以再次使用系统LDAP,但PHP 7.3将需要仅openldap公开的新符号。

    这是否意味着macOS中的LDAP支持在PHP 7.3及以上版本中已经失效,除非PHP代码有补丁,或者在macOS的OpenLDAP实现中有补丁?

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


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

    0 回复  |  直到 4 年前
        1
  •  0
  •   Giacomo1968    3 年前

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

    LDAP支持回到了MAMP 6.3及更高版本的PHP版本中。

    决定检查新版本的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 对于任何需要知道这一点的人。