トップ 一覧 検索 ヘルプ RSS ログイン

技術的雑談-PHPのバージョンにおけるLDAPライブラリの挙動の違いの変更点

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

[[技術的雑談]]へ戻る