2011-03-15 6 views
8

संपर्क नहीं कर सकता मैं अपने php स्क्रिप्ट के साथ समस्या निम्नलिखित है:पीएचपी चेतावनी: ldap_bind(): सर्वर करने के लिए बाध्य करने में असमर्थ: LDAP सर्वर

पीएचपी चेतावनी: ldap_bind(): सर्वर करने के लिए बाध्य करने में असमर्थ : में .... LDAP सर्वर संपर्क नहीं कर सकता

ldap_connect() कहते हैं, "सफलता" लेकिन ldap_bind() विफल रहता है, कैसे है कि इस मुद्दे को ठीक करने के लिए?

+0

आपने एक उत्तर चुनना चाहिए। – JDPeckham

उत्तर

7

कनेक्ट सत्र खोलता है। बाइंड वास्तव में आपको प्रमाणित करता है। इस प्रकार आप जुड़े हुए लेकिन वैध प्रमाण-पत्रों के साथ लॉगिन नहीं किया।

+3

यह उत्तर सही नहीं है। मैं PHP चेतावनी प्राप्त करने में सक्षम हूं: ldap_bind(): सर्वर से जुड़ने में असमर्थ: LDAP सर्वर से संपर्क नहीं कर सकता ... एक सर्वर पर जबकि मैं बाइंड के परिणामस्वरूप 'सत्य' प्राप्त करने के लिए समान प्रमाण-पत्रों का उपयोग करने में सक्षम हूं मेरी स्थानीय मशीन पर। – kush

+0

'ldap_connect' विधि सर्वर से सत्र को कनेक्ट या खोलता नहीं है। दस्तावेज़ों से ** नोट: यह फ़ंक्शन कनेक्शन नहीं खोलता है।यह जांचता है कि दिए गए पैरामीटर व्यावहारिक हैं और जितनी जल्दी हो सके कनेक्शन खोलने के लिए इस्तेमाल किया जा सकता है। **। 'Ldap_bind' करने का कार्य कनेक्शन शुरू करेगा, इसलिए 'ldap_start_tls' होगा। – ChadSikorra

-2

ldap_bind() फ़ंक्शन एक तीन मापदंडों के लिए पूछता है:

  1. एक संसाधन आईडी
  2. एक RDN
  3. RDN RDN और पासवर्ड के साथ जुड़े एक पासवर्ड वैकल्पिक हैं

यदि आप केवल संसाधन आईडी का उपयोग करके बाध्य करते हैं: -

// $ldap=ladap_connect(*hostname*,*port*); 
// ldap_connect() returns a resource id 
ldap_bind() returns a boolean value(true or false) 
ldap_bind($ladp); //annonymous bind  
$lb=ldap_bind($ldap,"uid=xxx,ou=something,o=hostname.com","password"); //used to authenticate 

यह तब काम करना चाहिए यदि आप अमान्य प्रमाण-पत्रों का उपयोग नहीं कर रहे हैं।

+1

कृपया अपने उत्तर के स्वरूपण में सुधार करें, विशेष रूप से सूची और कोड स्वरूपण का उपयोग करें - देखें [संपादन सहायता] (http://stackoverflow.com/editing-help)। –

+0

@ ओबेनसोन कृपया अपनी टिप्पणी की वर्तनी, या उत्तर में सुधार करें। –

+0

@CeesTimmerman इसे इंगित करने के लिए धन्यवाद। आप http://stackoverflow.com/review/ –

2

मुझे ऐसा अनुभव नहीं है जो मैं यहां पढ़ रहा हूं। मैं

$ds=ldap_connect("goblydeegook",336); 
if($ds) echo "successful"; 

की कोशिश की और मैं

+1

पर अपना ध्यान देना चाहेंगे [lpap_connect()] के लिए [php.net दस्तावेज़ीकरण के वापसी मान अनुभाग) (http://us3.php.net/manual/en/ function.ldap-connect.php) बताता है कि क्यों $ डीएस सच है। यहां प्रासंगिक भाग दिया गया है: 'जब OpenLDAP 2.x.x का उपयोग किया जाता है, ldap_connect() हमेशा संसाधन लौटाएगा क्योंकि यह वास्तव में कनेक्ट नहीं होता है लेकिन कनेक्टिंग पैरामीटर को प्रारंभ करता है। वास्तविक कनेक्ट ldap_ * funcs के लिए अगली कॉल के साथ होता है, आमतौर पर ldap_bind() के साथ – rynemccall

3

RHEL7 (CentOS7) पर इस त्रुटि था SELinux सीमित बंदरगाहों HTTPD उपयोग कर सकते हैं की वजह से "सफल" प्रतिक्रिया हो रही है।

LDAP बंदरगाहों 389 और 636 के लिए अनुमति देने सूची डिफ़ॉल्ट पर नहीं हैं, के साथ आप अनब्लॉक कर सकते हैं:

fsockopen('LDAP-Server-IP', 389); 
:

setsebool -P httpd_can_network_connect 1 

आप LDAP सर्वर के लिए एक सॉकेट कोशिश कर रहा द्वारा प्रतिबंध के लिए परीक्षण कर सकते हैं

यह 'अनुमति अस्वीकृत' देगी जो दिखा रहा है कि यह अवरुद्ध है और प्रमाण-पत्र समस्या नहीं है।

अन्य चीजों को अवरोधित करने के लिए अपनी SELinux ऑडिट लॉग फ़ाइल भी देखें।

0

कुछ समय समस्या अपने परिवेश (लिनक्स, विंडोज ...) की निर्भर इस विकल्प में से एक के साथ बाध्य करने की कोशिश करेंगे:

$connect = ldap_connect("ldap://".$ldap_server); 
$auth_user = 'CN=XXX,OU=XXX,DC=XXX,DC=com'; 
$bind = ldap_bind($connect, $auth_user , $auth_pass); 

या

$bind = ldap_bind($connect, 'YourDomaine\\'.$auth_user , $auth_pass); 
संबंधित मुद्दे