首页技术PHPLDAP(php操作ldap)

PHPLDAP(php操作ldap)

编程之家2024-01-30115次浏览

一、无法加载动态库php_ldap.dll

解决方案:

PHPLDAP(php操作ldap)

windows下php_ldap.dll的安装()

载php_ldap.dll,用的是php-5.3.3-Win32-VC6-x86,所以要找对应的ldap版本,大约是149KB.

然后查看php手册的LXXV. LDAP Functions介绍,看到还有两个依赖库libeay32.dll and ssleay32.dll需要放到环境变量path里,由于这两个文件在php目录下,而且安装php时path已包含该路径,所以不需要设置,反之,就要放到windows能找到的目录了,比如win2000,就要复制到system32文件夹下。

然后,重启apache.

用phpinfo()查看加载成功。

PHP无法加载LDAP扩展的解决方法

PHPLDAP(php操作ldap)

扩展库是php扩展的功能,比如php本来不支持操作某种功能,但在新版本想对它提供支持,就以扩展的方式来提供,这样,我们在配置php时,如果我们不用此功能,我们就可以让php不加载他.从而节省服务器资源.提供其性能

php的扩展库一般放在php目录下的ext目录里.你在网上下载的php压缩包解压后应该可以看到.

php.ini中的 extension_dir用来指定你的扩展名的地址。

php.ini中有一排像;extension="xxxxxx.dll"的内容就是用来配置让你的php运行环境支持什么不支持什么。

以下为php.ini中的剪切段

;extension=php_bz2.dll

PHPLDAP(php操作ldap)

;extension=php_curl.dll

;extension=php_dba.dll

PHP配置中出现不能加载模块的问题

在PHP配置出现不能加载模块之类的错误

加载LDAP模块的问题

在Windows XP环境下配置php和ldap容易出现 php中加载php_ldap.dll的问题

解决办法:

需要在C:\WINNT\SYSTEM32, or C:\WINDOWS\SYSTEM拷贝PHP安装目录中的libeay32.dll和ssleay32.dll即可

产生原因:

这是php本身带有的一个bug

二、如何组建和操作LDAP数据库

LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大。

LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。要特别注意的是,LDAP通常作为一个hierarchal数据库使用,而不是一个关系数据库。因此,它的结构用树来表示比用表格好。正因为这样,就不能用SQL语句了。

简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。

LDAP是轻量目录访问协议(LightweightDirectory Access Protocol)的缩写,其实是一话号码簿,类似于我们所使用诸如NIS(NetworkInformation Service)、DNS(Domain Name Service)等网络目录,也类似于你在花园中所看到的树木。

LDAP是一种特殊的数据库。但是LDAP和一般的数据库不同,明白这一点是很重要的。 LDAP对查询进行了优化,与写性能相比LDAP的读性能要优秀很多。

1.1 LDAP的存储规则

区分名(DN,DistinguishedName)

和自然界中的树不同,文件系统/LDAP/电话号码簿目录的每一片枝叶都至少有一个独一无二的属性,这一属性可以帮助我们来区别这些枝叶。

在文件系统中,这些独一无二的属性就是带有完整路径的文件名。比如/etc/passwd,该文件名在该路径下是独一无二的。当然我们可以有/usr/passwd,/opt/passwd,但是根据它们的完整路径,它们仍然是唯一的。

在LDAP中,一个条目的区分名称叫做“dn”或者叫做区分名。在一个目录中这个名称总是唯一的。比如,我的dn是"uid=aghaffar, ou=People, o=developer.ch"。不可能有相同的dn,但是我们可以有诸如"uid=aghaffar,ou=Administrators, o=developer.ch"的dn。这同上面文件系统中/etc/passwd和/usr/passwd的例子很类似。

我们有独一无二的属性,在"ou=Administrators,o=developer.ch"中uid和在"ou=People,o=developer.ch"中的uid。这并不矛盾。

CN=Common Name为用户名或服务器名,最长可以到80个字符,可以为中文;

OU=Organization Unit为组织单元,最多可以有四级,每级最长32个字符,可以为中文;

O=Organization为组织名,可以3—64个字符长

C=Country为国家名,可选,为2个字符长

LDAP目录以一系列“属性对”的形式来存储记录项,每一个记录项包括属性类型和属性值(这与关系型数据库用行和列来存取数据有根本的不同)。

mail= testmail@mccc.net

othermailbox= testmailother@mccc.com

givenname= givenname

sn= test sn

属性可添加,以下一个属性必须赋值:

objectclass=person(值为:person或 server或organization或其他自定义的值)

2 PHP(PHP培训php教程)如何操作LDAP

2.1 Php如何与LDAP连接和关闭

$ds=ldap_connect("ServerName")

ServerName是LDAP的服务器名,

例:

$ds=ldap_connect(“10.31.172.30:1000”)

返回值是:true或false

关闭连接

ldap_close($ds);

2.2在php中如何搜索用户信息

$ds=ldap_connect("10.31.172.30:1000");

//首先连接上服务器

$justthese=array("cn","userpassword",”location”);

//搜索函数中的一个参数,要求返回哪些信息,

//以上传回cn,userpassword,location,这些都要求小写

$sr=ldap_search($ds,"o=jite","cn=dom*",$justthese);

//第一个参数开启LDAP的代号

三、php中,ldap验证的错误: 这个报错始终解决不了,可否相告~

在 LDAP的协议之中,很像硬盘目录结构或倒过来的树状结构。LDAP的根就是全世界,第一级是属于国别(countries)性质的层级,之后可能会有公司(organization)的层级,接着是部门(organizationalUnit),再来为个人。而就像文件,每个人都会有所谓的显名(distinguished name,简称 dn),dn可能像酱子 cn=John Smith,ou=Accounts,o=My Company,c=US。

<?php

//本例使用到 connect, bind, search, interpret search

// result, close connection等等 LDAP的功能。

echo"<h3>LDAP搜寻测试</h3>";

echo"连接中...";

$ds=ldap_connect("localhost");//先连上有效的 LDAP服务器

echo"连上".$ds."<p>";

if($ds){

echo"Binding...";

$r=ldap_bind($ds);//匿名的 bind,为只读属性

echo"Bind返回".$r."<p>";

echo"Searching for(sn=S*)...";//找寻 S开头的姓氏

$sr=ldap_search($ds,"o=My Company, c=US","sn=S*");

echo"Search返回".$sr."<p>";

echo"S开头的姓氏有".ldap_count_entries($ds,$sr)."个<p>";

echo"取回姓氏资料...<p>";

$info= ldap_get_entries($ds,$sr);

echo"资料返回".$info["count"]."笔:<p>";

for($i=0;$i<$info["count"];$i++){

echo"dn为:".$info[$i]["dn"]."<br>";

echo"cn为:".$info[$i]["cn"][0]."<br>";

echo"email为:".$info[$i]["mail"][0]."<p>";

}

echo"关闭链接";

ldap_close($ds);

} else{

echo"<h4>无法连接到 LDAP服务器</h4>";

}

?>

快速域名备案(域名快速备案怎么弄)请检查名称的拼写(win7共享请检查名称的拼写)