PHP LDAP选项未定义

时间:2017-04-12 20:42:44

标签: php ssl ldap openldap

我试图使用PHP LDAP模块在我的某些组织内容上放置身份验证层。如果我将LDAP_OPT_X_TLS_REQUIRE_CERT设置为0,该脚本将完美运行,但如果我不这样做,则会出现以下错误。

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

This page表明可以通过将LDAP服务器的安全证书放在我自己的服务器上来解决对等证书错误。我向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.

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

1 个答案:

答案 0 :(得分:2)

Ldap-Option LDAP_OPT_X_TLS_CACERTDIR在PHP 7.1中引入了PHPs LDAP-Extension(https://github.com/php/php-src/commit/8e9e89610e2e196892dbb7b605c65923a3fedf87)。因此,当您使用PHP 7.0时,没有机会在不自行破解PHP源的情况下启动并运行。最简单的选择是更新到PHP 7.1