警告: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已配置。无论我尝试做什么,起初问题让我头疼。任何帮助都将受到高度赞赏。
答案 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)