技術的雑談-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 -- 初版
技術的雑談へ戻る