警告:ldap_start_tls()[function.ldap-start-tls]:无法启动TLS:服务器不可用

时间:2011-12-12 11:11:11

标签: php starttls

  

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

我的配置如下

Centos 5.7 PHP版本5.3.3

php53-ldap已配置。无论我尝试做什么,起初问题让我头疼。任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

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

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

您可以在/etc/openldap/ldap.conf(Windows上的c:\openldap\sysconf\ldap.conf)上修改该文件,或者如果该文件尚未存在则创建一个文件,并将该行放入其中:

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。

此消息来源:

答案 1 :(得分:0)

你有installed PHP --with-ldap [= DIR]吗?

此外:

  1. 如果您已通过SSL连接到LDAP服务器,请不要使用ldap_start_tls(),例如“LDAPS:// hostame”。
  2. 使用ldap://而不是ldaps://调用ldap_connect()以使ldap_start_tls()成功
  3. Source

相关问题