Chinaunix

标题: ldap连接本地服务器问题 [打印本页]

作者: hxlxsj    时间: 2005-02-22 17:40
标题: ldap连接本地服务器问题
我是个新手,环境是:win2000,apache2,mysql,php4;安装了openldap-2.2.19-db-4.2.52-openssl-0.9.7e-win32.exe后,openldap能正常起动,但在运行php文件时,其中写的$connect = ldap_connect( "localhost", "389" or exit(">;>;Could not connect to LDAP server<<";
连接服务器时报错:Fatal error: Call to undefined function: ldap_connect() in C:\Apache2\htdocs\test3.php on line 12
谁能告诉我什么原因,或者是windows2000上openldap服务器如何配置?(因为网上关于windows2000上openldap服务器配置的文章,实在太少,几乎没有)。
急盼复!!
作者: hxlxsj    时间: 2005-02-23 08:30
标题: ldap连接本地服务器问题
请哪位高手给予回复,急急!!!
作者: yjnet    时间: 2005-02-23 08:49
标题: ldap连接本地服务器问题
你可先用ldapsearch命令连接ldap服务器,测试是否能正常连接。之后再考虑php的问题?
作者: hxlxsj    时间: 2005-02-23 11:06
标题: ldap连接本地服务器问题
我用命令:ldapsearch –x –b ‘’ -s base ‘(objectclass=*)’
没有连接上,显示:ldap_bind:Can't contact LDAP server (-1),请高手指点迷津!
作者: hxlxsj    时间: 2005-02-23 11:16
标题: ldap连接本地服务器问题
我的openldap服务器根本没有连接上,因为windows2000上openldap服务器如何配置,各数据文件怎样创建和放在什么地方我还不知道,请各位高手指点,谢谢!
作者: py    时间: 2005-02-23 14:50
标题: ldap连接本地服务器问题
你的LDAP server没有启动,启动的时候slapd.exe -d 256
把错误贴出来
openldap在windows下的配置和在linux下一样
作者: hxlxsj    时间: 2005-02-23 15:01
标题: ldap连接本地服务器问题
运行salpd -d 256后,显示:
@(#) $OpenLDAP: slapd 2.2.19(Dec 9 2004 10:10:42) $
  @LUNCHBOX:/home/jpclizbe/openldap-mingw-build-4/openldap-2.2.19/servers/slapd
bdb_back_initialize:Sleepycat Software:Berkeley DB 4.3.21November 8,2004)
bdb_db_init:Initializing BDB database
slapd starting
谢谢回复!
作者: hxlxsj    时间: 2005-02-23 15:19
标题: ldap连接本地服务器问题
请速回贴。
作者: hxlxsj    时间: 2005-02-23 17:12
标题: ldap连接本地服务器问题
请版主速回,能具体告诉我win2000上openldap的各项配置吗,我的c:\openldap\var\openldap-data\下只有一些*.bdb文件,是不是我要单独做bdb文件放在下面呢?请速回。急 急 急 ......
作者: py    时间: 2005-02-23 20:23
标题: ldap连接本地服务器问题
现在的结果是正常的,LDAP server已经启动了
作者: py    时间: 2005-02-23 20:25
标题: ldap连接本地服务器问题
原帖由 "hxlxsj" 发表:
我用命令:ldapsearch –x –b ‘’ -s base ‘(objectclass=*)’
没有连接上,显示:ldap_bind:Can't contact LDAP server (-1),请高手指点迷津!

这样
ldapsearch -x -D "cn=Manager,dc=abc,dc=com" -w password -b "dc=abc,dc=com" '(objectclass=*)'
作者: hxlxsj    时间: 2005-02-24 08:29
标题: ldap连接本地服务器问题
尊敬的版主:
现在win2000的openldap能正常起动,但在运行php文件时,其中写的$connect = ldap_connect( "localhost", "389" or exit(">;>;Could not connect to LDAP server<<";
连接服务器时怎么会报错:Fatal error: Call to undefined function: ldap_connect() in C:\Apache2\htdocs\test3.php on line 12
谁能告诉我什么原因,能详细地介绍一下windows2000上openldap服务器如何配置吗?
忠心感谢!
作者: leave    时间: 2005-02-24 08:32
标题: ldap连接本地服务器问题
你在你的php.ini中把php_ldap的函数dll前面的注释';'去掉就可以了.
作者: hxlxsj    时间: 2005-02-24 09:46
标题: ldap连接本地服务器问题
我输入了以下命令ldapsearch -x -D "cn=Manager,dc=bbbb,dc=com" -w password -b "dc=bbbb,dc=com" '(objectclass=*)'后,要求输入口令,输入:secret
显示:ldap_bind:Can't contact LDAP server (-1)
(我到目前还不知道win2000下openldap的目录怎样设置,具体放在哪里,请指点)
作者: hxlxsj    时间: 2005-02-24 10:41
标题: ldap连接本地服务器问题
ldap_connect()已经通过,但ldap_read()不能通过,
现在是读不着文件,在以下php文件最后一行不能通过显示:
Search: No such object in...
<?
if(!isset($host)) $host = 'localhost';
if(!isset($port)) $port = '389';
if(!isset($dn)) $dn = 'dc=changhong,dc=com';
if(!isset($filter)) $filter = 'objectclass=*';

$con = ldap_connect($host,$port) or die('ldap_connect error');

echo ''.chr(13);

//read this object
$rst = ldap_read($con,$dn,$filter) or die('ldap_read error');
........
?>;

请明示ldif文件放在哪里,如何创建?
作者: leave    时间: 2005-02-24 15:40
标题: ldap连接本地服务器问题
你的php里面联接之后,还要绑定连接句柄,用管理员和密码:
$ldapbind = ldap_bind($ds, $ldaprdn, $ldappass);

你的slapd.conf文件配置了么?


不知道你用的是什么版本?发一个给我看看,我用的是linux也可以用win.
作者: ily_luan    时间: 2005-02-24 22:20
标题: ldap连接本地服务器问题
现在LDAPServer已经启动了,你应该再用命令去看一下
ldapsearch -h (ip) -p (port) -b "ou=xx, dc=xx,dc=xx" "条件属性=条件值*"
作者: hxlxsj    时间: 2005-02-25 09:04
标题: ldap连接本地服务器问题
我在c:\openldap\var\openld-data\下面建有一文件xsj.ldif,其内容是:
dn: dc=myadmin.com,o=myadmin
dc: myadmin.com
objectClass: dcObject
objectClass: organization
o: myadmin

dn: uid=abcd, dc=myadmin.com,o=myadmin
sn: abcd
userPassword:: e2NyeXB0fXNtOEtMcGxrbE90bmM=
loginShell: /bin/sh
gidNumber: 99
uidNumber: 99
mail: abcd@myadmin.com
objectClass: person
objectClass: inetorgperson
objectClass: dcObject
objectClass: country
objectClass: posixAccount
uid: abcd
c: China
isProxy: 1
cn: abcd
homeDirectory: /home/ftp
dc: myadmin.com

dn: uid=test, dc=myadmin.com,o=myadmin
sn: test
userPassword:: e2NyeXB0fXNtYlBlRFVDZXd5dms=
mail: test@myadmin.com
objectClass: person
objectClass: inetorgperson
objectClass: dcObject
objectClass: country
uid: test
c: China
cn: test
isProxy: 1
dc: myadmin.com
.......
我在php文件中写入:
$ds=ldap_connect("localhost","389";
$r = ldap_bind($ds,"cn=abcd,o=myadmin","secret";
报告如下:
ldap_bind(): Unable to bind to server: Protocol error in  ...
我在slapd.conf中是这样配置的:
suffix "dc=myadmin.com"
rootdn "uid=abcd,o=myadmin,dc=myadmin.com"
rootpw secret
directory        C:/openldap/var/openldap-data
index objectClass eq
我按照leave教我的来绑定:
$ldaprdn = "uid=,o=myadmin,dc=myadmin.com";
$ldappass = "secret";
$ldapbind = ldap_bind($ds, $ldaprdn, $ldappass);
报告:
Unable to bind to server: Can't contact LDAP server in ......
...
...
...
...
作者: hxlxsj    时间: 2005-02-25 15:56
标题: ldap连接本地服务器问题
在php文件中写入:
$ds=ldap_connect("localhost","389";
$r = ldap_bind($ds,"cn=abcd,o=myadmin","secret";
错误报告如下:
ldap_bind(): Unable to bind to server: Protocol error in  ...

难道是密码(secret)有误?
ldif文件如何转为openldap的数据库?
因为我没有linux,谁能告诉我在win2000下openldap的数据库是如何创建的。以及相关文件的设置和位置在哪里?
作者: py    时间: 2005-02-25 17:13
标题: ldap连接本地服务器问题
php的api我不太清楚,是不是默认用了v2 bind?
作者: leave    时间: 2005-02-27 12:56
标题: ldap连接本地服务器问题
原帖由 "hxlxsj" 发表:
在php文件中写入:
$ds=ldap_connect("localhost","389";
$r = ldap_bind($ds,"cn=abcd,o=myadmin","secret";
错误报告如下:
ldap_bind(): Unable to bind to server: Protocol error in  ...

难道是密码(s..........



LDAP_v2  _v3的错误

两种办法:
1。在你的php  ldap_bind之前加上下面的一段]
if (ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) {
    echo "Using LDAPv3"."<br />;";
} else {
    echo "Failed to set protocol version to 3"."<br />;";
}

2。在你的slapd.conf里面加上一句:allow bind_v2
作者: hxlxsj    时间: 2005-02-28 08:42
标题: ldap连接本地服务器问题
谢谢leave
我用您介绍的两种方法均试过,但仍有错误报告:
Unable to bind to server: Invalid credentials in ......
作者: NetSnake    时间: 2005-02-28 11:38
标题: ldap连接本地服务器问题
Fatal error: Call to undefined function: ldap_connect()
表示你的PHP没有将LDAP支持编译进去。
请检查一下PHP配制。
作者: hxlxsj    时间: 2005-02-28 11:52
标题: ldap连接本地服务器问题
谢谢NetSnake
我现在是在win2000下能连接openldap服务器,只是不能绑定,请指教!
我的问题在已经一个星期了,请各位高手帮帮忙!
作者: hxlxsj    时间: 2005-02-28 13:06
标题: ldap连接本地服务器问题
我在php ldap_bind之前加上下面的一段:
if (ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) {
echo "Using LDAPv3"."<br />;";
} else {
echo "Failed to set protocol version to 3"."<br />;";
}
能够通过,显示"Using LDAPv3".
但仍是错误信息:Unable to bind to server: Invalid credentials in...


我在slapd.conf中加入allow bind_v2后,openldap服务器起不来,显示为:
.......
bdb_db_init:Initializing BDB database
.\slapd.conf:line 80:allow line must appear prior to database definitions
.\slapd.conf:line 80:unknown feature bind_v3 in "allow <features>;" line
slapd shutdown:freeing system resources.

请高手们指点。谢谢
slapd stopped.
connections_destroy:nothing to destroy.
作者: NetSnake    时间: 2005-02-28 17:55
标题: ldap连接本地服务器问题
我记得PHP 4.x都不可以用LDAP v3的。
还有,很多系统都首先尝试使用匿名用户连接,你要看看slapd.conf里面关于访问权限的配制。

应该是你的slapd.conf配制不太合适,你可以把配制文件贴上来看看。
作者: hxlxsj    时间: 2005-03-01 08:33
标题: ldap连接本地服务器问题
谢谢,我的slapd.conf如下:
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
ucdata-path        C:/openldap/ucdata
include                C:/openldap/etc/schema/core.schema

# Define global ACLs to disable default read access.

# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral        ldap://root.openldap.org

pidfile                C:/openldap/var/run/slapd.pid
argsfile        C:/openldap/var/run/slapd.args

# Load dynamic backend modules:
# modulepath        C:/openldap/libexec/openldap
# moduleload        back_bdb.la
# moduleload        back_ldap.la
# moduleload        back_ldbm.la
# moduleload        back_passwd.la
# moduleload        back_shell.la

# Sample security restrictions
#        Require integrity protection (prevent hijacking)
#        Require 112-bit (3DES or better) encryption for updates
#        Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64

# Sample access control policy:
#        Root DSE: allow anyone to read it
#        Subschema (sub)entry DSE: allow anyone to read it
#        Other DSEs:
#                Allow self write access
#                Allow authenticated users read access
#                Allow anonymous users to authenticate
#        Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
#        by self write
#        by users read
#        by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn.  (e.g., "access to * by * read"
#
# rootdn can always read and write EVERYTHING!

#######################################################################
# BDB database definitions
#######################################################################

database        bdb
suffix "dc=my-domain,dc=com"

rootdn "cn=Manager,dc=my-domain,dc=com"

# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd( and slapd.conf(5) for details.
# Use of strong authentication encouraged.
#
rootpw secret
#
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
#
directory        C:/openldap/var/openldap-data
#
# Indices to maintain
#
index objectClass eq
#
#index cn,sn,uid
#index default none

allow bind_v2
作者: NetSnake    时间: 2005-03-01 09:53
标题: ldap连接本地服务器问题
试试把allow bind_v2 放到args_file后面。
还有,你的错误提示怎么是allow bind_v3 ?
作者: starxing    时间: 2005-03-01 09:58
标题: ldap连接本地服务器问题
ldap_bind($ds,"cn=abcd,o=myadmin","secret";
的意思是用cn=adcd,o=myadmin绑定ds,
可是在你的slapd.conf中
是这个
suffix "dc=my-domain,dc=com"

rootdn "cn=Manager,dc=my-domain,dc=com"
你到底使用的那个呀!
作者: pujing    时间: 2005-03-01 13:50
标题: ldap连接本地服务器问题
问题解决了吗?如果解决了的话,怎么处理的,发上来看看。
作者: hxlxsj    时间: 2005-03-02 09:01
标题: ldap连接本地服务器问题
我的slapd.conf文件内容改成:
ucdata-path C:/openldap/ucdata
include C:/openldap/etc/schema/core.schema
pidfile C:/openldap/var/run/slapd.pid
argsfile C:/openldap/var/run/slapd.args
allow bind_v2
database bdb
suffix "dc=test.com"
rootdn "uid=abcd,o=test,dc=test.com"
rootpw secret
directory        C:/openldap/var/openldap-data
index objectClass eq

我测试用的php文件内容为:
<?php
$ldap['host'] = "localhost";
$ldap['port'] = 389;
$ldap['dn']   = "uid=abcd,dc=test.com";
$ldap['base'] = "";

// connecting to ldap
echo "start LDAP <br>;";
echo "连接中 ...";
$ds=ldap_connect($ldap['host'],$ldap['port']);
echo "连上 ".$ds."<br>;";

if ($ds){
        $r = ldap_bind($ds,"dc=test.com","secret";
}else{
        echo "fail";
}
?>;


我的c:\openldap\var\openldap-data\test.ldif文件内容为:
dn: uid=abcd,dc=test.com,o=test
dc: test.com
objectClass: dcObject
objectClass: organization
o: test

但经过测试,错误显示还为:

start LDAP
连接中 ...连上 Resource id #2

Warning: ldap_bind(): Unable to bind to server: Invalid credentials in ......
表明能连上服务器,但不能绑定。
作者: bluemoonstar    时间: 2005-03-02 12:31
标题: ldap连接本地服务器问题
能加我吗?bluemoonstar7@hotmail.com
我安的是OPENLDAP2.0.27FORWIN.也是用命令行方式往里面加不进去数据
共同研究一下吧
作者: starxing    时间: 2005-03-02 16:07
标题: ldap连接本地服务器问题
让我们来看看你的连接吧,
$r = ldap_bind($ds,"dc=test.com","secret"
      

第二个参数是错误的,应该写成你要绑定的DN,而不是suffix,例如你要用uid=abcd,dc=test.com来绑定
应该这么写ldap_bind($ds,"uid=abcd,dc=test.com","secret";
还有你的目录的数据中有没有这个DN,要是没有可以添加上,
例如
dn: uid=abcd,dc=test.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: abcd
sn: abcd
uid:abcd
userPassword:secret

添加上您在试试!
作者: hxlxsj    时间: 2005-03-03 08:54
标题: ldap连接本地服务器问题
starxing您好:
我按照您的意思照办但问题依照
Warning: ldap_bind(): Unable to bind to server: Invalid credentials in .....
作者: starxing    时间: 2005-03-03 10:38
标题: ldap连接本地服务器问题
将你的slapd.conf中的文件 include段像以下的添加完整,
include                C:/openldap/etc/schema/core.schema
include         C:/openldap/etc/schema/corba.schema
include         C:/openldap/etc/schema/cosine.schema
include         C:/openldap/etc/schema/inetorgperson.schema
include         C:/openldap/etc/schema/misc.schema
include         C:/openldap/etc/schema/openldap.schema
include         C:/openldap/etc/schema/nis.schema
include         C:/openldap/etc/schema/java.schema

把allow bind_v2 注释掉;


下面的程序你参考一下
// verify that the login is good
$ds = @ldap_connect($ldap['host'],$ldap['port']);

// go with LDAP version 3 if possible
@ldap_set_option( $ds, LDAP_OPT_PROTOCOL_VERSION, 3 );

$r = @ldap_bind($ds); //这用的是匿名登陆!!!

if( ! $r) {
        echo "Could not bind  LDAP server.";
}

从你的配置文件中是支持匿名登陆的,这样应该是成功的。

用这个命名
ldapsearch -x -b "dc=test.com"
察看一下你里面的数据,看看你的目录中到底有什么条目。
你要用来绑定的条目一定要存在目录中,并且userPassword一定有,
不然是不能成功的。

如果没有你就添加几个条目上去。

添加成功后再用代用户名和密码的ldap_bind试一试,祝您好运!
作者: hxlxsj    时间: 2005-03-03 11:31
标题: ldap连接本地服务器问题
我完全按照您的意思完成了修改,经测试错误还是如下:
Could not bind LDAP server.
运行ldapsearch -x -b "dc=test.com"
显示:ldap_bind:Can't contact LDAP server (-1)
同时ldap服务启不来,显示:
....
c:/openldap/etc/schema/core.schema:line 77uplicate attributeType:"2.5.4.2"
slapd shutdown:freeing system resources.
slapd staopped.
connections_destroy:nothing to destroy.
作者: starxing    时间: 2005-03-03 11:57
标题: ldap连接本地服务器问题
能不能把你的slapd.conf文件和用来测试的.ldif文件给我发一封邮件
我的邮件地址是star_xing@126.com
作者: hxlxsj    时间: 2005-03-04 08:45
标题: ldap连接本地服务器问题
starxing:
我已经把我的slapd.conf,xsj.ldif,test.php以及openldap服务启动情况发给您了。
作者: timwhoung    时间: 2005-03-04 09:18
标题: ldap连接本地服务器问题
关注!
我也搞不好,又由其它事做,也就放下了.
作者: starxing    时间: 2005-03-04 10:52
标题: ldap连接本地服务器问题
已经回信,请查收!
作者: timwhoung    时间: 2005-03-14 11:17
标题: ldap连接本地服务器问题
解决了吗?分享一下
作者: believefym    时间: 2005-04-02 15:45
标题: ldap连接本地服务器问题
为什么这里的人这么少,问题都没人解决
我是个新手,在windows下搞ldap,装了openldap for win32,用ldapbrowser,但是连接的时候不知道服务器地址等
不知道openldap服务器要怎么配置,有没有详细的资料呢,各位提供一点啊
作者: oicqcx    时间: 2005-04-06 17:02
标题: ldap连接本地服务器问题
我想用php连接我的ldap服务器,用ldap_connect连接,老是说Fatal error: Call to undefined function: ldap_connect() in d:\usr\www\html\test.php on line 11

我在php.ini里把extension=php_ldap.dll前面的“;”去了再运行,报错:是我发的这个图片。但是我在extensions里是能够找到php_ldap.dll这个文件的啊,到底是哪边不行?

我的php服务器是用的Apache+PHP+MySQL+Perl 服务器套件 V1.1.0,在win32下傻瓜安装的那种,不知道是不是这个原因,望感受能给我指导,谢谢

11.JPG (13.17 KB, 下载次数: 40)

11.JPG

作者: 金西    时间: 2005-07-18 12:16
标题: ldap连接本地服务器问题
是你的PHP中没有支持 ldap_connect() 函数
作者: eingmarra    时间: 2005-07-20 11:24
标题: ldap连接本地服务器问题
斑竹我也是同样的问题,请您答复!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2