[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 メーリングリストの案内