尝试使用ldap_connect()
时,我收到此错误:
致命错误:调用未定义的函数ldap_connect()
我已经重新编译了启用了LDAP apache模块的php,并且我已经编辑了我的php.ini文件并且没有注释:
extension=php_ldap.dll
我在Red Hat Linux上,php 5.3.10,apache 2.2。有什么想法吗?
已加载的Apache模块:(包含* util_ldap *)
核心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协议:(包含: ldap )
dict,file,ftp,ftps,gopher,http,https,imap,imaps,ldap,ldaps,pop3,pop3s,rtsp,smtp,smtps,telnet,tftp
答案 0 :(得分:10)
你写道:
尝试使用ldap_connect()时,出现此错误:
致命错误:调用未定义的函数ldap_connect()
您收到此错误,因为未定义函数ldap_connect
Docs。你不能在PHP中调用未定义的函数,这就是你看到致命错误的原因。
要定义该功能,您需要加载a PHP module/extension called LDAP
。它附带installation intructions。你写道:
我已经重新编译了启用了LDAP apache模块的php。
如果您重新编译PHP,请确保启用LDAP,请参阅:
在编译PHP以启用LDAP支持时,您需要使用
--with-ldap[=DIR]
配置选项。 DIR是LDAP基本安装目录。
但是,通常只需通过包管理器安装您需要的内容,例如尝试:
# yum install php-ldap
如果它还不够,您实际上需要编辑PHP配置(并非总是必要),请执行以下操作:
$ vi /etc/php.ini
add extension=ldap.so
# service httpd restart
我希望这会有所帮助。请注意.dll
仅限Windows。
答案 1 :(得分:1)
这主要是预感,但您是否尝试过降级到PHP 5.3.9?
互联网上有一小部分关于LDAP在5.3.10被破坏的嗡嗡声。另外,如果你觉得胆子大,可以试试PHP 5.4。
答案 2 :(得分:1)
我强烈建议您使用可以使用yum安装的PHP。根据您的RH版本,您可能必须指定您想要php53(对于RH< 6)。所以,安装如下:
此时,你应该好好去。您根本不需要安装任何特殊的Apache LDAP库来使PHP与LDAP一起使用。
如果您使用RH 6,那么您可以跳过名称的53部分。
答案 3 :(得分:0)
对于CentOs。我已经安装了Php 7。 所以当我试图执行
时yum install php-ldap
出现此错误
php71w-common conflicts with php-common-5.4.16-43.el7_4.1.x86_64
要解决此错误并安装ldap-php,请执行
yum install php71w-ldap
服务器将尝试安装5.6但我们需要引导服务器安装7。
如果它不起作用,请尝试在另一个答案中提到的php.ini中添加扩展名。
不要忘记重启服务器。
安装完成后,ldap-login将成功完成。