ID: 18986 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Feedback +Status: No Feedback Bug Type: LDAP related Operating System: solaris 6 PHP Version: 4.2.2 New Comment:
No feedback was provided. The bug is being suspended because we assume that you are no longer experiencing the problem. If this is not the case and you are able to provide the information that was requested earlier, please do so and change the status of the bug back to "Open". Thank you. Previous Comments: ------------------------------------------------------------------------ [2002-09-09 01:42:31] [EMAIL PROTECTED] I see your reasoning, but I'm opposed to this change. PHP always defaulted to v2 since the LDAP library did, and if one used v3 server one had to set the version. To use v3 do as follows before binding: ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); ------------------------------------------------------------------------ [2002-09-08 17:17:14] [EMAIL PROTECTED] See bug #19281 "OpenLDAP 2.1.4 requires version" for a fix for ldap.c if you are using OpenLDAP 2.1.3 or greater. (Use at your own risk, of course.) ------------------------------------------------------------------------ [2002-09-05 20:21:04] [EMAIL PROTECTED] openldap-2.1.4 with this configuration ./configure --prefix=/var/ldap php-4.2.2 with this configuation: ./configure --with-ldap=/var/ldap Then upon running this code: <?php $basedn = "dc=example,dc=com"; $managerdn = "cn=Manager,$basedn"; $managerpassword = "secret"; echo "Connecting ...\n"; $ds=ldap_connect("localhost"); // must be a valid LDAP server! echo "connect result is ".$ds."\n\n"; if ($ds) { echo "Binding ($managerdn)..."; $r = ldap_bind($ds, $managerdn, $managerpassword); echo "Bind result is ".$r."\n\n"; ldap_close($ds); } ?> I get this error: LDAP: Unable to bind to server: Protocol error in /home/dkoopman/ldap_search.php Here is what the debug mode of my slapd shows: ldap_pvt_gethostbyname_a: host=devldap.example.net, r=0 connection_get(12): got connid=0 connection_read(12): checking for input on id=0 ber_get_next ldap_read: want=9, got=9 0000: 30 31 02 01 01 60 2c 02 01 01...`,.. ldap_read: want=42, got=42 0000: 02 04 1c 63 6e 3d 4d 61 6e 61 67 65 72 2c 64 63 ...cn=Manager,dc 0010: 3d 67 6f 64 61 64 64 79 2c 64 63 3d 63 6f 6d 80 =example,dc=com. 0020: 09 6c 64 61 70 31 32 33 34 35 .secret ber_get_next: tag 0x30 len 49 contents: ber_get_next ldap_read: want=9 error=Resource temporarily unavailable ber_get_next on fd 12 failed errno=11 (Resource temporarily unavailable) do_bind ber_scanf fmt ({imt) ber: ber_scanf fmt (m}) ber: >>> dnPrettyNormal: <cn=Manager,dc=example,dc=com> => ldap_bv2dn(cn=Manager,dc=example,dc=com,0) <= ldap_bv2dn(cn=Manager,dc=example,dc=com,0)=0 => ldap_dn2bv(272) <= ldap_dn2bv(cn=Manager,dc=example,dc=com,272)=0 => ldap_dn2bv(272) <= ldap_dn2bv(cn=manager,dc=example,dc=com,272)=0 <<< dnPrettyNormal: <cn=Manager,dc=example,dc=com>, <cn=manager,dc=example,dc=com> do_bind: version=2 dn="cn=Manager,dc=example,dc=com" method=128 send_ldap_result: conn=0 op=0 p=2 send_ldap_response: msgid=1 tag=97 err=2 ber_flush: 52 bytes to sd 12 0000: 30 32 02 01 01 61 2d 0a 01 02 04 00 04 26 72 65 02...a-......&re 0010: 71 75 65 73 74 65 64 20 70 72 6f 74 6f 63 6f 6c quested protocol 0020: 20 76 65 72 73 69 6f 6e 20 6e 6f 74 20 61 6c 6c version not all 0030: 6f 77 65 64 owed ldap_write: want=52, written=52 0000: 30 32 02 01 01 61 2d 0a 01 02 04 00 04 26 72 65 02...a-......&re 0010: 71 75 65 73 74 65 64 20 70 72 6f 74 6f 63 6f 6c quested protocol 0020: 20 76 65 72 73 69 6f 6e 20 6e 6f 74 20 61 6c 6c version not all 0030: 6f 77 65 64 owed What can be done? This appears to be a problem with the way PHP is interacting with ldap server. Notice the "version not allowed" commands in the slapd output. If I make an entry with the Manager dn using the tools that come with openldap, ldapadd, it shows that it is using version 3. Looks like PHP is using version 2, which openldap-2.1.4 does not like. What can be done? Can somebody create a patch for the ldap.c file? Help. ------------------------------------------------------------------------ [2002-08-20 13:00:06] [EMAIL PROTECTED] Most likely a library clash..as you've got oracle support too, and it has it's own ldap functions. Try pointing --with-ldap to the oracle directory. (/opt/oracle/product/817/) ------------------------------------------------------------------------ [2002-08-20 09:59:29] [EMAIL PROTECTED] compiling and installation was successful. But a single running of LDAP code failed. configure options: ./configure --without-mysql --with-oci8 --with-apxs=/usr/local/apache/bin/apxs --with-ldap=/usr/local --enable-xslt --with-xslt-sablot=/usr/local --with-iconv --with-ssl=/usr/local/ssl --enable-libgcc LDAP query test Connecting ...connect result is Resource id #1 Binding ... Warning: LDAP: Unable to bind to server: Can't contact LDAP server in /home/luoy/public_html/ldap.php on line 12 Bind result is ... >From LDAP server side, we did not see bind request ( Ususally we can if we use some native tools like ldapseach) library dependence [luoy@admsol03:/home/luoy/src/php-4.1.2]$ldd /usr/local/apache/libexec/libphp4.so libdl.so.1 => /usr/lib/libdl.so.1 libpam.so.1 => /usr/dt/lib/libpam.so.1 libsablot.so.0 => /usr/local/lib/libsablot.so.0 libexpat.so.0 => /usr/local/lib/libexpat.so.0 libsched.so.1 => /usr/lib/libsched.so.1 libsocket.so.1 => /usr/lib/libsocket.so.1 libnsl.so.1 => /usr/lib/libnsl.so.1 libldap.so.2 => /usr/local/lib/libldap.so.2 liblber.so.2 => /usr/local/lib/liblber.so.2 libresolv.so.2 => /usr/lib/libresolv.so.2 libm.so.1 => /usr/lib/libm.so.1 libclntsh.so.8.0 => /opt/oracle/product/817/lib/libclntsh.so.8.0 libc.so.1 => /usr/lib/libc.so.1 libmp.so.2 => /usr/lib/libmp.so.2 libwtc8.so => /opt/oracle/product/817/lib/libwtc8.so libaio.so.1 => /usr/lib/libaio.so.1 /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=18986&edit=1