!!!技術的雑談-PHPのバージョンにおけるLDAPライブラリの挙動の違い !!環境 *PHP 5.2.6(LDAP API 2004) *PHP 5.2.11(LDAP API 3001) !!現象 *旧版のPHPで動いていたLDAPのコードが動かなくなる !!原因 LDAP APIのバージョンの違いによるもののようです。 見つけたものでは、ldap_search()で対象のエントリーが見つからなかった時の挙動。 (ldap_searchのfilterに対象エントリー数が0となるような検索条件を入れる。) *PHP 5.2.6 : {'count' => 0}というarrayが返る *PHP 5.2.11 : nullが返る 当然、そのままの戻り値をldap_get_entries()に渡すと例外になります。 !!対処 ldap_count_entries()で検索結果の個数を確認して、1以上であったらldap_get_entries()に渡す。 他のPHPのバージョンについては不明ですが、そのPHPでのLDAP APIのバージョンは「php -i」を実行すると「ldap」のセクションに表示されています。 !!履歴 2009/12/18 -- 初版 [[技術的雑談]]へ戻る !!突っ込み {{comment}} [[技術的雑談]]へ戻る {{trackback}} [[技術的雑談]]へ戻る