2012-04-09 9 views
2

Beim Versuch, ldap_connect() zu verwenden, erhalte ich diese Fehlermeldung:Kann nicht LDAP-Funktionen erhalten in PHP laden

Fatal error: Call to undefined function ldap_connect()

ich PHP mit der LDAP-Apache-Modul neu kompiliert habe aktiviert ist, und ich habe meine php bearbeitet INI-Datei zu und unkommentiert:

extension=php_ldap.dll 

ich bin auf Red Hat Linux, pHP 5.3.10, Apache 2.2. Irgendwelche Ideen?

Loaded Apache Module: (enthält * util_ldap *)

Kern mod_authn_file mod_authn_default mod_authz_host mod_authz_groupfile mod_authz_user mod_authz_default mod_auth_basic mod_include mod_filter util_ldap mod_log_config mod_logio mod_env mod_expires mod_headers mod_setenvif mod_version Mod_proxy mod_proxy_connect mod_proxy_ftp mod_proxy_http mod_proxy_scgi mod_proxy_ajp mod_proxy_balancer mod_ssl Prefork http_core mod_mime mod_status mod_autoindex mod_asis mod_info mod_suexec mod_cgi mod_negotiation mod_dir mod_actions mod_userdir mod_alias mod_rewrite mod_so mod_auth_passthrough mod_bwlimited mod_fpcgid mod_php5 mod_security

Apache Protocols: (enthält: ldap)

dict, Datei, ftp, ftps, Gopher, HTTP, HTTPS, IMAP, imaps, LDAP, ldaps, POP3- pop3s, RTSP, SMTP-, SMTPS, telnet, tftp

+0

Haben Sie Apache nach der Bearbeitung neu gestartet? – jprofitt

+5

Das sind Module in Apache, nicht in PHP. –

+1

überprüfen Sie die geladenen Erweiterungen über 'phpinfo()', um das Problem einzugrenzen. Wenn es nicht angezeigt wird, stellen Sie sicher, dass auch Startfehler angezeigt werden, um falsche Pfade oder falsche Schreibweisen der LDAP-Erweiterungsdatei zu identifizieren. – Lars

Antwort

9

Sie schreiben:

When attempting to use ldap_connect(), I get this error:

Fatal error: Call to undefined function ldap_connect()

Sie diesen Fehler erhalten, weil die Funktion ldap_connect­Docs nicht definiert ist. Sie können keine undefinierte Funktion in PHP aufrufen, deshalb sehen Sie den schwerwiegenden Fehler. Um diese Funktion zu definieren, müssen Sie a PHP module/extension called LDAP laden. Es kommt mit installation intructions.Sie schrieb:

I've recompiled php with the LDAP apache module enabled.

Wenn Sie PHP neu kompilieren, stellen Sie sicher, LDAP aktivieren, finden Sie unter:

You will need to use the --with-ldap[=DIR] configuration option when compiling PHP to enable LDAP support. DIR is the LDAP base install directory.

aber normalerweise ist es genug, nur zu installieren, was Sie über den Paketmanager benötigen, beispielsweise versuchen:

# yum install php-ldap 

Wenn es nicht genug ist, und Sie müssen eigentlich Ihre PHP-Konfiguration (nicht immer erforderlich) bearbeiten, tun es:

$ vi /etc/php.ini 

add extension=ldap.so 

# service httpd restart 

Ich hoffe, dass dies hilfreich ist. Achten Sie darauf, dass .dll nur Windows ist.

1

Dies ist vor allem eine Ahnung, aber haben Sie versucht, Downgrade auf PHP 5.3.9?

Es gibt eine kleine Menge von Buzz im Internet über LDAP am 5.3.10 gebrochen. Außerdem könnte PHP 5.4 ausprobieren, wenn Sie sich gewagt fühlen.

1

Ich würde dringend empfehlen, dass Sie das PHP verwenden, das Sie mit yum installieren können. Abhängig von Ihrer RH-Version müssen Sie möglicherweise angeben, dass Sie php53 (für RH < 6) möchten. So installieren Sie das wie folgt aus:

  1. yum install php53
  2. yum install php53-ldap

An diesem Punkt sollten Sie gut zu gehen. Sie müssen keine spezielle Apache LDAP-Bibliothek installieren, um PHP mit LDAP arbeiten zu lassen.

Wenn Sie RH 6 verwenden, können Sie den 53 Teil des Namens überspringen.