未定义 PHP LDAP 选项

标签 php ssl ldap openldap

我正在尝试使用 PHP LDAP 模块在我组织的某些内容上放置一个身份验证层。如果我将 LDAP_OPT_X_TLS_REQUIRE_CERT 设置为 0,该脚本将完美运行,但如果不设置,我将收到以下错误。

  • > ldap_error()返回“无法绑定(bind)到服务器:无法联系 LDAP 服务器”
  • > ldap_get_option()对于 LDAP_OPT_ERROR_STRING 返回“TLS 错误 -8179:无法识别对等方的证书颁发者。”

This page建议通过将 LDAP 服务器的安全证书放在我自己的服务器上来解决 Peer's Certificate 错误。我向 IT 部门申请了 PEM。现在我需要确定将它放在哪里。

当我尝试通过为 LDAP_OPT_X_TLS_CACERTDIR 打印 ldap_get_option() 来获取预期的证书目录时,我收到警告“ldap_get_option() 期望参数 2 为整数,给定字符串”。事实上,当我回显 LDAP_OPT_X_TLS_CACERTDIR 本身时,结果实际上就是那个字符串,而不是整数。

例如:

echo LDAP_OPT_SIZELIMIT . '<br />';
echo LDAP_OPT_ERROR_STRING . '<br />';
echo LDAP_OPT_X_TLS_CACERTDIR;
die();

结果:

3
50
LDAP_OPT_X_TLS_CACERTDIR

这是每个 LDAP_OPT_X_ 的问题? the documentation 中列出的选项LDAP_OPT_X_TLS_REQUIRE_CERT 除外,它打印为 24582。

有谁知道为什么没有定义这些选项?

最佳答案

Ldap 选项 LDAP_OPT_X_TLS_CACERTDIR 在 PHP 7.1 中引入到 PHP LDAP 扩展 (https://github.com/php/php-src/commit/8e9e89610e2e196892dbb7b605c65923a3fedf87)。因此,当您使用 PHP 7.0 时,如果不自己破解 PHP-Sources,就没有机会启动并运行它。最简单的选择是更新到 PHP 7.1

关于未定义 PHP LDAP 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43379303/

相关文章:

api - 尝试连接到 HTTPS 时出错

java - Java 中的安全 LDAP 身份验证

ssl - 为 System.DirectoryServices.DirectoryEntry 设置回调以处理自签名 SSL 证书?

ssl - 谷歌容器引擎中的 Kubernetes 负载均衡器 SSL 终止?

javascript - 我如何在发布请求javascript中包含ssl证书

php - VSCode Xdebug 和 DBGp 代理

php - WPML 和自定义帖子类型存档模板

ldap - 如何在 liferay 6.1 中为 LDAPAuth 类创建 Hook

php - Magento Rest api 通过电子邮件 ID 获取客户

php - 如何在表格下设置 Php <tr> 标签的样式以将字体调整为 x-large