Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP LDAP连接可以';不要联系LDAP服务器_Php_Active Directory_Ldap - Fatal编程技术网

PHP LDAP连接可以';不要联系LDAP服务器

PHP LDAP连接可以';不要联系LDAP服务器,php,active-directory,ldap,Php,Active Directory,Ldap,我有一个正在迁移的外部web服务器。我正在尝试通过LDAP对内部服务器上的Active Directory进行身份验证。我能够使用相同的代码从旧服务器(Ubuntu 8)连接和验证,但无法在新服务器(Redhat 7)上验证 外部服务器当前运行的是运行PHP 5.4.16并启用LDAP支持(PHP LDAP)的Redhat 7 内部服务器当前是带有LDAP和Active Directory的Windows server 2008机箱 下面的代码是我正在使用的当前PHP,它能够在旧服务器上连接,但

我有一个正在迁移的外部web服务器。我正在尝试通过LDAP对内部服务器上的Active Directory进行身份验证。我能够使用相同的代码从旧服务器(Ubuntu 8)连接和验证,但无法在新服务器(Redhat 7)上验证

外部服务器当前运行的是运行PHP 5.4.16并启用LDAP支持(PHP LDAP)的Redhat 7

内部服务器当前是带有LDAP和Active Directory的Windows server 2008机箱

下面的代码是我正在使用的当前PHP,它能够在旧服务器上连接,但在新服务器上有问题。它基本上使用PHP LDAP连接字符串并尝试绑定。我用标识符替换了一些个人信息。(用户名、子域等)

这是我在错误日志(新服务器)中得到的信息:


再找了几天后,我找到了答案。塞利努克斯。更具体地说,是设置了httpd\u can\u network\u connect是我们正在研究的:

httpd\u can\u network\u connect(httpd服务)::允许httpd脚本和模块连接到网络。

此命令可用于将其打开:

setsebool-p httpd\u可以连接网络\u连接

我找到了这个答案,解决了这个问题:

<?php

$adServer = "ldaps://subdomain.domain.edu";

$ldap = ldap_connect($adServer);
$username = 'USERNAME';
$password = 'PASS';

$ldaprdn = 'DOMAIN' . "\\" . $username;

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) {
    $filter="(sAMAccountName=$username)";
    $result = ldap_search($ldap,"dc=subdomain,dc=domain,dc=edu",$filter);
    ldap_sort($ldap,$result,"sn");
    $info = ldap_get_entries($ldap, $result);
    for ($i=0; $i<$info["count"]; $i++)
    {
        if($info['count'] > 1)
            break;
        echo "<p>You are accessing <strong> ". $info[$i]["sn"][0] .", " . $info[$i]["givenname"][0] ."</strong><br /> (" . $info[$i]["samaccountname"][0] .")</p>\n";
        echo '<pre>';
        var_dump($info);
        echo '</pre>';
        $userDn = $info[$i]["distinguishedname"][0];
    }
    @ldap_close($ldap);
} else {
    $msg = "Invalid email address / password";
    echo $msg;
}

?>
#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE   dc=example,dc=com
#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666

#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never

#TLS_CACERTDIR  /etc/openldap/certs

# Turning this off breaks GSSAPI used with krb5 when rdns = false
SASL_NOCANON    on
TLS_REQCERT never
ldap_create
ldap_url_parse_ext(ldaps://subdomain.domain.edu)
ldap_bind_s
ldap_simple_bind_s
ldap_sasl_bind_s
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP subdomain.domain.edu:636
ldap_new_socket: 10
ldap_prepare_socket: 10
ldap_connect_to_host: Trying XXX.18X.XX.19:636
ldap_pvt_connect: fd: 10 tm: -1 async: 0
attempting to connect:
connect errno: 13
ldap_close_socket: 10
ldap_new_socket: 10
ldap_prepare_socket: 10
ldap_connect_to_host: Trying XXX.18X.XX.24:636
ldap_pvt_connect: fd: 10 tm: -1 async: 0
attempting to connect:
connect errno: 13
ldap_close_socket: 10
ldap_new_socket: 10
ldap_prepare_socket: 10
ldap_connect_to_host: Trying XXX.18X.XX.41:636
ldap_pvt_connect: fd: 10 tm: -1 async: 0
attempting to connect:
connect errno: 13
ldap_close_socket: 10
ldap_new_socket: 10
ldap_prepare_socket: 10
ldap_connect_to_host: Trying 2002:XXXX:XXXX::XXXX:XXXX 636
ldap_pvt_connect: fd: 10 tm: -1 async: 0
attempting to connect:
connect errno: 13
ldap_close_socket: 10
ldap_err2string
[Mon Feb 23 15:20:28.689775 2015] [:error] [pid 12299] [client 10.25.XX.XX:53630] PHP Warning:  ldap_bind(): Unable to bind to server: Can't contact LDAP server in /var/www/html/index2.php on line 19