使用ldap.conf部署php

时间:2017-03-14 10:04:43

标签: php azure ldap openldap ldapconnection

我使用php 7使用LDAP连接到活动目录。我需要手动创建一个文件:C:\ openLDAP \ sysconf \ ldap.conf并且永远不会设置TLS_REQCERT。如果我没有创建此文件,则ldap无法连接。

如何将其部署到例如不包含C:盘的天蓝色机器?

你知道更好的方法来解决这个错误吗?

我试过这个: Need help ignoring server certificate while binding to LDAP server using PHP

   putenv('LDAPTLS_REQCERT=never');

但它不起作用。

2 个答案:

答案 0 :(得分:0)

如果您的服务器已安装AnExplorer。您可以在/usr/local/etc/openlad/ldap.conf中更改配置。

如果您没有OpenLDAP,那么您最常安装它。

答案 1 :(得分:0)

我知道它的岁月,但是我遇到了同样的问题,这就是我所做的,这就是@ChadSikorra所说的。

  1. 在与您的ldap有连接的站点根目录中放置一个.php脚本(我做了test / ldap.php),在php ldap_connect()

    之前添加以下代码
    ini_set('display_errors', 1);
    
    error_reporting(E_ALL);
    
    ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
    
    
  2. 使用站点根目录下的Kudu CMD,cd测试,php ldap.php

这是结果

ldap.php logs

  1. 注意第5条红线,导航至D:/并创建.ldaprc文件

  2. 编辑文件并粘贴TLS_REQCERT never,保存,重复步骤2。

  3. 如果您的应用程序正在运行,请转到应用程序控制台并重新启动服务器。

完成!

下面完整的ldap.php文件

$username = "USERNAME";
$password = "PASSWORD";
$adServer = "IP"; //or domain
$adPort = 389;
$ldaprdn = "DOMAIN\\$username";

ldap_set_optioNULL, LDAP_OPT_DEBUG_LEVEL, 7);

putenv('LDAPTLS_REQCERT=never');

$ldap = ldap_connect("ldaps://$adServer", $adPort);

ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

$bind = ldap_bind($ldap, $ldaprdn, $password);

if ($bind) {
    echo "Connection successful";
    @ldap_close($ldap);
} else {
    echo "Invalid email address / password";
}