2011-12-12 195 views
2

警告:ldap_start_tls()[function.ldap启动-TLS]:无法启动TLS:服务器是在第13个 Ldap_start_tls /var/www/html/testldap/index.php不可用失败警告:ldap_start_tls()[function.ldap启动-TLS]:无法启动TLS:服务器不可用

我的配置是如下

Centos的5.7 PHP版本5.3.3

php53-LDAP已配置。无论我尝试做什么,最初的问题都让我头痛。任何帮助将不胜感激。

+0

请出示你的代码,并建议您尝试连接到什么LDAP提供商。 – DaveRandom

回答

0

您是否installed PHP --with-ldap [= DIR]?

另外:

  1. 不要使用ldap_start_tls()如果你已经通过SSL连接例如到LDAP服务器“LDAPS:// hostame”。
  2. 调用ldap_connect()与LDAP://而非LDAPS://为ldap_start_tls()接替

Source

+0

我已经配置php与php-ldap 我有我的系统管理员的活动目录的设置,因此将需要使用它们。 –

2

嗯,这是一次有趣的旅程。

您遇到的问题是您的机器不接受服务器的证书有效。简单的解决方法是禁用在ldap.conf文件中完成的检查,或者使用环境变量。

您可以编辑在/etc/openldap/ldap.confc:\openldap\sysconf\ldap.conf在Windows上)的文件或创建一个,如果它不存在,并把这一行是:

TLS_REQCERT never 

...或者你可以创建一个环境变量名称为LDAPTLS_REQCERT,值为never

一旦我做了任何的那些东西,下面的脚本为我工作:

<?php 

    // Settings 
    $host = 'server.domain.local'; 
    $port = 389; 
    $user = 'administrator'; 
    $pass = 'password'; 

    // Connect, set options and bind 
    $ds = ldap_connect($host, $port); 
    if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) exit('Could not disable referrals'); 
    if (!ldap_set_option($ds, LDAP_OPT_REFERRALS, 0)) exit('Could not disable referrals'); 
    if (!ldap_start_tls($ds)) exit('Could not start TLS'); 
    if (!ldap_bind($ds, $user, $pass)) exit('Bind operation failed'); 

    // A quick list operation to make sure it worked 
    if (!$result = ldap_list($ds, 'dc=domain,dc=local', 'objectClass=*')) exit('List operation failed'); 
    print_r(ldap_get_entries($ds, $result)); 

烦人,既不putenv('LDAPTLS_REQCERT=never');也不$_ENV['LDAPTLS_REQCERT'] = 'never';将工作 - 你必须要么创建配置文件或静态设置的变量。

如果您想验证证书,您需要进一步阅读如何正确配置OpenLDAP。

来源是:

+0

拯救生命。 'mkdir C:\ openldap \ sysconf'。 –