php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #12372 LDAP calls within a function fail
Submitted: 2001-07-25 13:24 UTC Modified: 2001-07-27 13:59 UTC
From: Mike at ftl dot com Assigned:
Status: Not a bug Package: LDAP related
PHP Version: 4.0.6 OS: RedHat 7.0
Private report: No CVE-ID: None
 [2001-07-25 13:24 UTC] Mike at ftl dot com
 When doing LDAP calls from within a function, it always returns 
'Warning: 1 is not a LDAP link index in blah.php on line 12'

 If I take the same code and put it in a .php file by itself it works great.

<?

        $ds=ldap_connect("blah.com") || die('Connection Failed');

if ($ds) {
    $dn = "ou=people, o=blah.com";
    $r=ldap_bind($ds);
    $justthese = array( "ou", "sn", "givenname", "mail", "telephonenumber", "mobile", "title");
    $filter = "sn=*";

    $sr=ldap_search($ds, $dn, $filter, $justthese);
    $info = ldap_get_entries($ds, $sr);

    for ($i=0; $i<$info["count"]; $i++) {
        echo "dn is: ". $info[$i]["dn"] ."<br>";
        echo "first name is: ". $info[$i]["givenname"][0] ."<br>";
        echo "lastname is: ". $info[$i]["sn"][0] ."<br>";
        echo "title is : ". $info[$i]["title"][0] ."<br>";
        echo "email is : ". $info[$i]["mail"][0] ."<br>";
        echo "telephone is : ". $info[$i]["telephonenumber"][0] ."<p>";
    }

    ldap_close($ds);
}

?>

 I don't get the error at the ldap_connect line so it makes the connection. But when it gets to the ldap_bind it bombs out. 

 Here is my config line....

./configure  --with-apache=../apache_1.3.20 --with-gd --with-pdflib=/usr/local --disable-debug --with-mnogosearch=/usr
/local/mnogosearch --with-mysql=/usr --with-zlib --enable-inline-optimization --with-gnu-ld --enable-memory-limit --enab
le-track-vars --with-jpeg-dir=/usr --with-tiff-dir=/usr --with-ttf=/usr --with-system-regex=yes --with-png-dir=/usr/lib 
--enable-trans-sid --enable-gd-imgstrttf --with-ldap=/usr/local/ldap

 Any help would be great.

 - Mike

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-07-25 15:14 UTC] Mike at ftl dot com
 One other thing....Ldap calls seem to work when they are stand alone. Seems that with mysql_connect or mysql_pconnect the script goes to hell...

 
 [2001-07-25 16:42 UTC] venaas@php.net
Are you sure the problem isn't simply that you do
$ds = ldap_connet.... outside the function, and are
not passing $ds as parameter to it? I'm not able to
reproduce this, could you perhaps give an example
script that fails?
 [2001-07-26 11:44 UTC] Mike at ftl dot com
 Ok....Like I said, it seems that it only bombs when you are doing mysql calls in the same script.

 Take the code below, or your own simple ldap search and add this to your script.

- Snip -
$connect = mysql_connect("db-server","user","password");
mysql_close($connect);
- Snip -

 Ya I know it's not doing anything but opening and closing the connection. If ya want, add a little query in there. It still acts the same. 

 I have tried this with openldap and ldapcsdk50 and both give the same results.

 Running MySQL-3.23.40(Tried with 3.23.37 as well).

 Let me know what other info you may need.

 Thanks,
 -Mike


 [2001-07-26 11:51 UTC] Mike at ftl dot com
 Ok....Like I said, it seems that it only bombs when you are doing mysql calls in the same script.

 Take the code below, or your own simple ldap search and add this to your script.

- Snip -
$connect = mysql_connect("db-server","user","password");
mysql_close($connect);
- Snip -

 Ya I know it's not doing anything but opening and closing the connection. If ya want, add a little query in there. It still acts the same. 

 I have tried this with openldap and ldapcsdk50 and both give the same results.

 Running MySQL-3.23.40(Tried with 3.23.37 as well).

 Let me know what other info you may need.

 Thanks,
 -Mike


 [2001-07-27 13:36 UTC] Mike at ftl dot com
 Ok this is too weird....Maybe you developers can make sense of this...

 My ldap connect line looked like this...

$ds = ldap_connect("ldap.blah.com") || die{'failed connect');

 If I drop the "|| die('failed connect')" , the scripts work great. 




 [2001-07-27 13:47 UTC] Mike at ftl dot com
Sorry my bad....

it is not a parse error....I typed FAT FINGERED when I typed in here...

 Should read

 $ds=ldap_connect("ldap.blah.com") || die('Connection Failed');

 ^^^^ cut an pasted from script. with domain changed of course

 Sorry bout that.

- Mike
 [2001-07-27 13:59 UTC] sniper@php.net
$ds=ldap_connect("ldap.blah.com") 
|| die('Connection Failed');

^^ This is the problem..

Answer is here:http://www.php.net/manual/en/language.operators.precedence.php

(hint: Change the '||' to 'or' :)

--Jani



 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 19 19:01:28 2024 UTC