1

コマンドラインでldapsearchコマンドを実行すると、大量の結果が返されますが、PHPを介した同等の(またはそう思う)クエリでは何も返されません。

ldapsearch コマンド:

ldapsearch -Zx -H ldap://directory.host.ca -D [CREDENTIALS] -w [PASSWORD] -z 0 -l 0 - LLL -b "ou=people,dc=business,dc=ca" "(&(facultyCode=AU)(term="1380")" uid

PHP 検索:

//binding has already happened with the same credentials as used in the CLI command
$filter = '(&(facultyCode=AU)(term="1380"))';
$list   = ldap_search($conn,'ou=people,dc=business,dc=ca',$filter,array('uid'),0,0,0);

私は何が欠けていますか?

4

1 に答える 1

0

サーバーログを確認して、検索要求で何が送信されたかを確認します。2つの例では、フィルターが同等ではない場合があります。たとえば、PHPは"文字を'(一重引用符から二重引用符)に変換する場合があります。エンコードされたフィルターの内部であり、同等ではありません'"

また、を使用したシェルの例では、をldapsearchエンコードしませんterm="1380"term=1380、をエンコードします。これは、と同じではありませんterm="1380"。言い換えると、ldapsearchコマンドは次のようになります(一部のシェルは引用符で囲まれた文字列を異なる方法でエスケープする場合があります)。

ldapsearch -Zx -H ldap://directory.host.ca \
   -D [CREDENTIALS] -w [PASSWORD] -z 0 -l 0 \
   -LLL -b "ou=people,dc=business,dc=ca" \
   '(&(facultyCode=AU)(term=1380)' uid
于 2012-07-06T09:34:42.347 に答える