[PHP-users 28550] ldap_bindのところでワーニングになります。
kondo
nobuaki3.kondo @ toshiba.co.jp
2006年 2月 23日 (木) 16:55:17 JST
近藤です。
お世話になります。
このMLは初めてになります。
よろしくお願いします。
PHPをソースから構築してldap_bindのところでワーニングになります。
原因を数日調査しているのですが原因不明なため、助言がいただけたらと思います。
(MLの過去ログも見させていただきましたが解決せず。)
具体的には、下にあるリスト1のtest.phpというものを実行すると
「Warning: ldap_bind(): Unable to bind to server: Protocol error in /パス・・・/test.php」
というエラーになります。(文言はWarningになってますが...)
ソースから構築したphp(/usr/local/bin/phpおよび/usr/local/apache2/modules/libphp4.so)
は、lddで見ると「libldap-2.3.so.0 => /usr/lib/libldap-2.3.so.0
(0x4009b000)」という行があります。
php -iで見ても「LDAP Support => enabled」が表示されています。
OpenLDAPは、test.phpを実行したサーバ内で起動しています。ApachやSambaはその
LDAPで認証させています。
ちなみに、VMWareでRedHat9をインストールし、LDAP(RPM版),Apache、PHPを
リスト2,3のconfigureオプションで構築してインストールた環境ではtest.phpは問題なく
動きます。(PHPでLDAPの認証も成功します。)
何がいけないのでしょうか。
何か助言をいただけたら助かります。
環境は以下の通りです。
RedHat9(Kernel 2.4.20-31.9),
LDAPは、RPM版の以下のパッケージ
openldap-2.0.27-8
openldap-clients-2.0.27-8
openldap-devel-2.0.27-8
openldap-servers-2.0.27-8
nss_ldap-202-5
また、このバージョンのLDAPに問題があるらしく、負荷が掛かりすぎたため、
ソースから構築したOpenLDAP2.3.11をインストールしています。
configureオプションは、下のリスト2の通りです。
※基本的にRPMパッケージ版と似たようなところにインストールされるようにしました。
PHPは、php-4.4.1でソースから構築。configureオプションは、リスト3の通りです。
<リスト1 テストプログラム>
-------------------------------------------------------------
<?php
$server='127.0.0.1';
$user ='username';
$passwd='secret';
$domain='dc=aaa,dc=bbb,dc=ccc';
$userdn='uid='.$user.',ou=Users,'.$domain;
$dc =ldap_connect($server);
if ($dc) {
echo "\$dc=".$dc."\n";
echo $server."\n";
echo $userdn."\n";
echo $passwd."\n";
//$r=ldap_bind($dc, $userdn , $passwd );
$r=ldap_bind($dc);
if ( !$r ) die("ldap_bind failed<br>\n");
echo "ldap_bind success\n";
ldap_close($dc);
}else{
echo "Unable to connect to LDAP Server\n";
}
?>
-------------------------------------------------------------
<リスト2 OpenLDAP2.3.11のconfigureオプション>
export LD_LIBRARY_PATH="/usr/local/lib"
env CPPFLAGS="-I/usr/include/openssl -I/usr/local/include -I/usr/include" \
LDFLAGS="-L/usr/local/lib -L/usr/lib -L/lib" \
./configure \
--exec-prefix=/usr --prefix=/etc/openldap2.3.11 --bindir=/usr/bin --sbindir=/usr/sbin
--libexecdir=/usr/sbin --sysconfdir=/etc--enable-dynamic=yes --enable-wrappers --enable-ipv6=no --enable-rlookups --enable-ldap --enable
-crypt=yes --enable-ldap=yes --enable-passwd=yes --enable-rlookps=yes --enable-ldbm=yes
--with-tls=yes --with-kerberos=yes --with-cyrus-sasl=yes
<リスト3 PHPのconfigureオプション>
env CPPFLAGS="-I/etc/openldap2.3.11/include" \
./configure \
--with-apxs2=/usr/local/apache2/bin/apxs --with-gd --enable-gd-native-ttf --with-freetype-dir=/usr
--with-png-dir=/usr --with-zlib --with-jpeg-dir= --with-pgsql=/usr --with-mysql=/usr
--with-ldap --enable-exif --enable-mbstring --enable-mbregex --enable-zend-multibyte
PHP-users メーリングリストの案内