Warning: ldap_start_tls() [function.ldap-start-tls]: Unable to start TLS: Server is unavailable in /var/www/html/testldap/index.php on line 13 Ldap_start_tls failed
我的配置如下
Centos 5.7 PHP 版本 5.3.3
php53-ldap 已配置。无论我尝试做什么,starttls 问题都让我头疼。任何帮助将不胜感激。
最佳答案
嗯,我和这个一起经历了多么有趣的旅程。
您遇到的问题是您的计算机不接受服务器的有效证书。解决此问题的简单方法是禁用检查,这是在 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。
来源:
关于php - 警告 : ldap_start_tls() [function. ldap-start-tls]:无法启动 TLS:服务器不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8473406/