- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!技術的雑談-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}}
[[技術的雑談]]へ戻る