phpLDAPadmin 安装配置讲解,通过 Web 端来管理您的 LDAP 服务器
做企业应用的也不时要与 LDAP 打交道的,例如组织架构、人员的管理,权限的分级控制等。以前管理 LDAP 都是用客户端工具 LDAP Browser
什么的,有时不甚方便。幸运的是,网上有一个现成的、功能完备的 LDAP Web 管理工具,那就是赫赫有名的 phpMyAdmin 的姊妹
phpLDAPadmin。
Web 方式的 phpLDAPadmin 利于发布,随处使用,基本上它有 LDAP Browser
客户端工具的所有功能,诸如条目管理、属性管理、导入导出、条件搜索等。还有比 LDAP Browser 所没有的 Schema
信息明细展示功能。
phpLDAPadmin 的界面截图请见:http://phpldapadmin.sourceforge.net/screenshots.php
您也可以进到
phpLDAPadmin 的 Demo 站点:http://thesmithfam.org/phpldapadmin-demo/htdocs/index.php 先睹为快。
本篇就来介绍
phpLDAPadmin 的安装及体验,读者最好是对 Apache、PHP、LDAP
有一定的了解。因未涉及非常具体的安装细节,只拣关键之处说明,所以如若对以上几个太过陌生的,可能中间稍有差池就要费些思量了。
一:软件准备
1. Apache HTTP Server,版本可选择 1.x 或
2.x,到 http://httpd.apache.org/ 下载。本文测试用的是
Apache 1.3.28。我偷了一下懒,直接用了安装 WAS 5.1 装上的 IBM HTTP Server。
2. OpenLDAP for Windows,文中版本是
2.2.29,可从 http://download.bergmans.us/openldap/openldap-2.2.29/openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe 下载。当然你也可以选择其他的版本。
3.
PHP 5,本文所用版本为 5.2.6,从 http://cn.php.net/distributions/php-5.2.6-Win32.zip 下载。因为这里的
phpLDAPadmin-1.1.0.5 要求是 PHP 5。
4. phpLDAPadmin,目前版本是
1.1.0.5,不过本文仍使用 1.1.0 版本,因为 1.1.0.5 我使用中有些问题,可从 http://nchc.dl.sourceforge.net/sourceforge/phpldapadmin/phpldapadmin-1.1.0.zip 下载。
二:软件安装
1. Apache
的安装
这个东西的安装、启动和停止就不多说了,用 %APACHE_HOME% 表示 Apache
的安装目录。
2. OpenLDAP 的安装配置
请参考之前写过的一篇日志:Windows下安装使用openldap。当然,你也可以藉此连接到一个已有的
LDAP 服务器,那么这一步就可以直接跳过。
只是我们将使用 OpenLDAP Samples(http://www.zytrax.com/books/ldap/ch5/index.html)
中的目录结构。所以与前面不同的是要把 OpenLDAP 安装目录下的 slapd.conf 中的 suffix、rootdn 和 rootpw
分别改为如下:
suffix
"dc=example,dc=com"
rootdn "cn=jimbob,dc=example,dc=com"
rootpw dirtysecret
然后拷贝下面文本框中的内容保存为 example.ldif 文件,比如放在 C
盘根目录下。
接着在 slapd -d 1 启动了 OpenLDAP
后,再用命令
ldapadd -x -D "cn=jimbob,dc=example,dc=com"
-w dirtysecret -f c:/example.ldif
导入到 OpenLDAP 中。导入后 LDAP
的目录结构如下图所示:
3. PHP 的配置
下载的
PHP 解压到某个目录下,用 %PHP_HOME% 表示这个目录。
关于 PHP 与 Apache 的结合,参考 %PHP_HOME% 目录下的
install.txt 文件。简单说就是:
1) 修改 %APACHE_HOME%/conf/httpd.conf 文件,我们以
Apache module 模块方式配置,在末尾加上下面三行
LoadModule php5_module "%PHP_HOME%/php5apache.dll"
#对于 Apache 2
则加载 php5apache2.dll,写成
#LoadModule php5_module
"%PHP_HOME%/php5apache2.dll"
AddType
application/x-httpd-php .php
#指定 php.ini
文件的置,默认是在 %windir% 目录下
PHPIniDir
"%PHP_HOME%/"
说明:%PHP_HOME%
替换为实际的路径
2) 把 %PHPE_HOME%/php.ini-recommended 文件更名为
php.ini,然后修改其中的
extension_dir =
"%PHP_HOME%/ext"
然后把 extension=php_gettext.dll 和
extension=php_ldap.dll 前面的分号(;) 注释符去掉,保存。明显我们的 php 要用到 ldap 库,还有在 phpLDAPadmin
中使用了 GETTEXT 来实现国际化。
3) 还要使得 Apache 启动时能加载到 %PHP_HOME% 下的
libeay32.dll 和 ssleay32.dll 这两个文件,我们不妨把这两个文件拷到 %APACHE_HOME% 目录下即可。
4) 最后我们来测试一下 PHP 安装是否成功,在 %APACHE_HOME%/conf/httpd.conf 的 DocumentRoot
所指向的站点主目录中新建一个 phpinfo.php,在里面写上:
<?php phpinfo();
?>
启动 Apache,在浏览器中用 http://localhost/phpinfo.php 看看是不是显示了
php 的相关信息,并且能找到启用了 LDAP 和 GETTEXT,OK,到这一步就完成一大半了。
4,
phpLDAPadmin 的安装配置
1) 把下载的 phpLDAPadmin 解压到 Apache
的站点主目录中,目录命名为 phpldapadmin,如 %APACHE_HOME%/htdocs/phpldapadmin,用
%PHP_LDAP_ADMIN_HOME% 来表示这个目录。
2) 把 %PHP_LDAP_ADMIN_HOME%
/config/config.php.example 更名为 config.php,这个文件中对于各项的配置有很详细的说明。
3)
修改以上的 config.php 文件
注意,如果是连接用来连接到本机的 389 端口上的 LDAP
服务,不用修改此文件都行,到时在界面上直接输入登录用户的 DN 和密码即可。
在该文件中找到行
$ldapservers->SetValue($i,'server','name','My LDAP
Server');
并把这一行随后的
//
$ldapservers->SetValue($i,'server','host','127.0.0.1');
//
$ldapservers->SetValue($i,'server','port','389');
//
$ldapservers->SetValue($i,'server','base',array(''));
//
$ldapservers->SetValue($i,'server','auth_type','cookie');
#
$ldapservers->SetValue($i,'login','dn','cn=Manager,dc=example,dc=com');
# $ldapservers->SetValue($i,'login','pass','secret');
去掉注释符(// 或 #),再依据前面的 OpenLDAP 配置依次改为
$ldapservers->SetValue($i,'server','host','localhost');
$ldapservers->SetValue($i,'server','port','389');
$ldapservers->SetValue($i,'server','base',array('dc=example,dc=com'));
$ldapservers->SetValue($i,'server','auth_type','cookie');
$ldapservers->SetValue($i,'login','dn','cn=jimbob,dc=example,dc=com');
$ldapservers->SetValue($i,'login','pass','dirtysceret');
以上那个属性不设置,则取默认值,如默认 host 为 localhost,port 为 389,base 为空则自动检测,auth_type 为
cookie,dn 和 pass 不设值则要求界面输入。
3) 如果要同时管多个 LDAP 服务器,则可在这个 config.php
文件中参照 $i++; 所在的注释块配置其他的 LDAP 服务器参数,配置了多个可以在 WEB 界面上通过下拉选择当前的的 LDAP
服务器。
三. 体验
phpLDAPadmin
在浏览器上访问 http://localhost/phpldapadmin/index.php,
点击左侧 My LDAP Server 下的 Login ...,输入 登录 DN 为 cn=jimbob,dc=example,dc=com
和密码为:dirtysecret,点击认证按钮就能连接上 LDAP 服务器进行管理了。这里挂上一个搜索的界面。
四.
一些问题
1. 为什么用 phpLDAPadmin 1.1.0,而不用目前最新版 1.1.0.5,因为
1.1.0.5 主要有两个问题:
1) 经常页面出现乱码,每次需手工选择网页编码为 UTF-8,1.1.0
下正常。
2) 即使在 config.php 中提供了登录 DN 和 密码,auth-type 是
cookie,也是不能自己登录的,一定要输入密码手工点一点认证按钮,1.1.0 下正常
2. 注意 PHP 的版本,以及是否开启了 LDAP 和
GETTEXT 支持。我首先拿到的 phpLDAPadmin 版本是 1.1.0-alpha3,看其中的 INSTALL
文件里写着的是:
PHP 4.1.0 or newer (with LDAP
support)
其实我还是比较大方的,直接用了 PHP 4.4.9 来伺候它,LDAP
也开了,结果它不领情。出现了这样的错误:
php unexpected T_STRING,
expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}'
定位在 PHP
类的变量声明上,如 public、private 和 clone 操作上,原因是 PHP 4 不支持这个,只能用 var,所以要换 PHP 5
才行。
还有 phpLDAPadmin 绝口未提要 GETTEXT
来支持它的国际化,害我从源代码中才翻出这一底细,即使是后续版本也对此默声不语。况且 PHP 4 本身就没有内置对 GETTEXT 的支持,尝试着安装
gettext for Win32 也不奏效,那就顺手移到 PHP5 上吧,在 php.ini 中把 GETTEXT
也打开,一切解决。
在 phpldapadmin/htdocs/index.php 中有这么一段代码:
# Make sure this PHP install has gettext, we use it for
language translation
if (!
extension_loaded('gettext'))
pla_error('<p>Your install of
PHP appears to be missing GETTEXT support.</p><p>GETTEXT is used for
language translation.</p><p>Please install GETTEXT support before
using phpLDAPadmin.<br /><small>(Dont forget to restart your web
server afterwards)</small></p>');
3. 有关 php.ini 和
config.php 的详细配置见这两文件本身吧,它们是自文档的,例如可以适当的裁剪一些 PHP 的功能。以及 PHP 和 Apache 的搭配也应见 PHP
的 install.txt。最后为方便访问,在 Apache 的 httpd.conf 中为
DirectoryIndex index.html index.php
把 index.php
也加上,如上形式。
本篇只关注如何配置 phpLDAPadmin 使用,碰到问题实际解决而已。旨在为我们开发中使用 LDAP
提供一个便利的工具而已,或有些用处。不用在 PHP 上纠缠,毕竟 PHP 太久没用过了,也不清楚现在演化成什么样子了。
4. 另外,若是你的
phpLDAPadmin 页面要加载的数据信息过于庞大时,建议用 FireFox,因为 FireFox 与 IE 的机制不一样,FireFox
首先会申请一大块内存,所以显示大量数据信息的页面时不会像 IE 那样拖不动。用 FireFox 和 IE 分别试着访问一下 Blogjava
首页面的,更多博客连接 http://www.blogjava.net/AllBloggers.aspx 就知道了。
转自:http://blog.csdn.net/kypfos/article/details/3035264