Doc #51638 [Com]: LDAP Referrals

From: Date: Tue, 20 Jul 2010 13:40:35 +0000
Subject: Doc #51638 [Com]: LDAP Referrals
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-4717@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=51638&edit=1 ID: 51638 Comment by: art dot vanscheppingen at spilgames dot com Reported by: marco at forgetaboutit dot net Summary: LDAP Referrals Status: Open Type: Documentation Problem Package: LDAP related Operating System: ALL PHP Version: Irrelevant New Comment: We have the exact same problem. Referrals do work correctly using the cli ldapmodify and with the exact same setup it doesn't work under PHP. I tried setting the LDAP_OPT_REFERRALS to either 1, LDAP_OPT_ON and true, but neither of them resulted in anything else than the default -1. Setting the value to 0 does have effect though, but doesn't do anything either. I set the LDAP server to a read only server, but that resulted in a LDAP error. Previous Comments: ------------------------------------------------------------------------ [2010-05-21 17:54:05] marco at forgetaboutit dot net Doing some monitoring with TCPDUMP, I can confirm that the local LDAP server is returning the correct referral information, and then the web server is performing a DNS lookup on the ldap referral URL. Then it would seem that PHP just tries the localhost again without running the procedure specified in ldap_set_rebind_proc. ------------------------------------------------------------------------ [2010-04-22 19:07:20] marco at forgetaboutit dot net Description: ------------ I am trying to get a php application to follow ldap referrals, specifically when the local server is a slave, and is used as a read-only server for performance reasons, but has to write to a master server in order to add, modify or delete records. As far as I can tell all I need are three things. A) Set LDAP_OPT_REFERRALS to 1 using ldap_set_options() B) Set a callback function using ldap_set_rebind_proc() C) Create a very simple rebind function. The problem is that there is no documentation on the subject. For example, when I check LDAP_OPTS_REFERRALS using ldap_get_options(), I get an answer of either 0 (when I set it to 0 or false), and an answer of -1 (minus or dash 1) for any other setting, including 1 and TRUE, and it appears that the callback function isn't called. If someone can explain how it is supposed to work enough for me to get it working, I am happy to provide documentation / examples Test script: --------------- ldap_set_option($LDAP_CON, LDAP_OPT_REFERRALS, 1); ldap_set_rebind_proc($LDAP_CON, rebind_on_referral); ... function rebind_on_referral ($link_id, $ldap_url) { $binddn = $_SESSION['ldapab']['binddn']; $bindpw = $_SESSION['ldapab']['password']; if (!ldap_bind($link_id,$binddn,$bindpw)) return 1; // Error else return 0; // Success } Expected result: ---------------- callback function should be called, application should rebind to new ldap server and user should notice nothing Actual result: -------------- PHP appears to ignore the referral and ldap_error returns a "referral" message. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=51638&edit=1

« previous php.doc.bugs (#4717) next »