2011-02-23 28 views
6

WAMP sunucumda bazı LDAP kimlik doğrulama kodu yazmaya çalışıyorum. Bazı temel Googling itibarenWAMP üzerinde LDAP Auth

Fatal error: Call to undefined function ldap_connect() in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\oplweb\index.php on line 10

Ben mod_ldap modülü açmak gerekiyor gibi görünüyor:

<?php 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 

$ldapconfig['host'] = 'my.server.province.country'; 
$ldapconfig['port'] = 389; 
$ldapconfig['basedn'] = 'DC=x,DC=y,DC=z,DC=x1'; 
$ldapconfig['authrealm'] = 'My Realm'; 

ldap_connect($ldapconfig['host'], $ldapconfig['port']) or die ('Could not connect'); 

echo 'connected'; 
?> 

bu hatayı alıyorum:

Bunu kullanıyorum. Basit görünüyor. \ Program Files \ Apache Software Foundation \ Apache2.2 \ modüllerini ve mod_ldap.so var olduğundan emin olun yaptı:

  • C gitti: Ben şunları yaptık. \ Program Files \ Apache Software Vakfı \ Apache2.2 \ conf \ httpd.conf ve dışarı yorumladı bu çizgi değil olduğundan emin oldum: LoadModule ldap_module modülleri/mod_ldap.so
  • Ben C içine gittin
  • ben C içine gittin: \ Program Files \ PHP \ php.ini bu satırda, diye değil yaptı: uzatma = php_ldap.dll
  • Apache'yi yeniden başlat

sorunu hala devam ediyor. Ldap_connect() işlevinin php'de başka bağımlılıkları var mı? Bir adımı kaçırıyor muyum?

Alkış

+0

Kendi extension_dir dosyanız php.ini dosyasında düzgün bir şekilde ayarlanmış mı? – glomad

+1

Ayrıca, sorununuzla alakasız olarak, bir yerde $ ldapconfig [] ve başka bir yerde $ ldap [] kullanıyorsunuz. – glomad

+0

Teşekkürler, sorunu var isimlerle düzelttim. –

cevap

2

emin ldap etkindir olmak için phpinfo kontrol edin. Bir LDAP bölümünü görmeli ve

Destek | Sen, uzatma dir şey etkinleştirmek otomatik olarak ayarlanmış php olabilir veya el ile görünen bir çizgi uncommenting etkinleştirmek gerekebilir

etkin gibi:

uzantısı = php_ldap.dll

yılında php.ini dosyanız

Etkinleştirdikten sonra apache'yi yeniden başlatmayı unutmayın.

+0

Phpinfo'da bir LDAP bölümü yok. Yüklenen modüller bölümünde apache2handler altında görünmektedir. –

+0

Ayrıca, php.ini klasöründeki extension = php_ldap.dll ile etkinleştirdim. –

+0

Phpinfo çıkışınızda görmüyorsanız, büyük olasılıkla etkin değildir. Bence bu senin gerçek problemin. – dobrien

1

Bir Active Directory bağlanıyorsanız, herhangi bir özel bir PHP uzantısı gerektirmez bu sınıfı kullanabilirsiniz: http://sourceforge.net/projects/adldap/

+0

Bu, LDAP gerektiriyor gibi görünüyor. Örnek sayfa, PHP'de LDAP desteği olmadığını belirten bir hata döndürür. –

+0

Üzgünüm, kötüyüm, LDAP uzantısının kullandığım kutuda yüklü olduğunu fark etmedim. – Capsule

4

benim Windows Server 2008 ile aynı sorun koştu - Sen eklediniz Windows yolunuza php.ini dosyası?


Git Denetim Masası'na ve Sistem simgesini açmak için (Başlat -> Ayarlar -> Denetim Masası -> Sistem, ya da sadece Başlat -> Denetim Masası -> Sistem Windows XP için/2003 +)

Path girdisini bulun 'Sistem Değişkenleri' panosuna

içine 'Ortam Değişkenleri' düğmesine

Bak Gelişmiş sekmesine

tıklayın gidin (ler gerekebilir Croll dahil sonunda PHP dizini girin) Yolu girişi

üzerinde

çift tıklayın bulmak için ';' önce (örneğin; C: \ php)

basın OK

+0

Bu ve uygun PHP.ini dosyasında LDAP'nin etkinleştirilmesi, bu çalışmanın benim için işe yaramasına neden olan şeydir. –

+0

PHP, PATH içinde ve LDAP'yi etkinleştirmek benim için de çalıştı. – foxybagga

1

Geçenlerde aynı sorunla karşılaştık ve benim diskte php.ini aramış ve orada iki php.ini dosyalar olduğunu tespit - php alt alta dizini ve diğer apache\bin dizininin altında. Her iki dosyada da extension=php_ldap.dll satırını rahatsız ettim ve sorun çözüldü. WAMP için

1

, php.ini'nin çalışma sürümü apache \ bin dizinindedir. i apache \ bin içinde php.ini ayarını değiştirinceye ve nihayet işe yaramaya başlayana kadar aynı sorunla karşılaştım.

+1

Sadece phpinfo() çalıştırdığınızda, php.ini dosyanızın nerede bulunduğunu size bildirir. – rkosegi