最近遇到一个障碍,客户端正在将以前使用端口389(aka:ldap://
)的一些基于PHP的LDAP代码的代码和连接切换到端口636(aka:ldaps://
)。该代码在生产和预览服务器上工作正常,但是在我的MAMP本地开发设置上却死定了。
当我将代码克隆到本地开发计算机上并在MAMP中启动时,除了通过端口636进行的LDAP连接外,其他所有功能都起作用。错误日志非常无用,仅显示如下行:“ Segmentation fault”错误:>
[Thu Aug 02 14:13:10 2018] [notice] child pid 13220 exit signal Segmentation fault (11)
[Thu Aug 02 14:16:33 2018] [notice] child pid 13245 exit signal Segmentation fault (11)
[Thu Aug 02 14:16:33 2018] [notice] child pid 13244 exit signal Segmentation fault (11)
[Thu Aug 02 14:16:33 2018] [notice] child pid 13242 exit signal Segmentation fault (11)
[Thu Aug 02 14:16:39 2018] [notice] child pid 13218 exit signal Segmentation fault (11)
[Thu Aug 02 14:18:21 2018] [notice] child pid 13363 exit signal Segmentation fault (11)
[Thu Aug 02 14:18:21 2018] [notice] child pid 13301 exit signal Segmentation fault (11)
[Thu Aug 02 14:18:21 2018] [notice] child pid 13219 exit signal Segmentation fault (11)
由于我正在使用MAMP进行本地开发,因此一切看起来都很干净,因此我检查了phpinfo()
中的设置,并看到了类似这样的内容:
该屏幕截图来自MAMP中的PHP 7.0.8信息,但与PHP 5.6.10,PHP 7.1.19和PHP 7.2.7相同或相似。这是代码运行所在的服务器的屏幕截图,该服务器在Ubuntu 14.04上运行PHP 5.5.9;请注意,“ SASL支持”已按预期启用:
如果将两者进行比较,很明显,罪魁祸首是缺乏“ SASL支持”。但是,是否有任何方法可以使MAMP使用缺少“ SASL支持”而无需重新编译源代码的LDAP模块?
检查phpinfo()
中使用的PHP配置化合物表明--with-ldap
用于MAMP和Ubuntu安装。但是只有Ubuntu安装会显示--with-ldap
和--with-ldap-sasl
的configure选项。
是的,我知道macOS不存储本地CA证书,因此我需要从钥匙串中导出或在TLS_REQCERT never
文件中设置/etc/openldap/ldap.conf
。但是我至少想要一些基本功能来处理MAMP中的SSL LDAP连接,而又不注视无休止的“分段错误”填充日志。