Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WAMP上的LDAP身份验证_Php_Windows_Apache_Ldap_Wamp - Fatal编程技术网

Php WAMP上的LDAP身份验证

Php WAMP上的LDAP身份验证,php,windows,apache,ldap,wamp,Php,Windows,Apache,Ldap,Wamp,我正在尝试在我的WAMP服务器上编写一些LDAP身份验证代码 我用这个: <?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

我正在尝试在我的WAMP服务器上编写一些LDAP身份验证代码

我用这个:

<?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';
?>

我得到了这个错误:

致命错误:调用undefined C:\Program中的函数ldap\u connect() 文件\Apache软件 基金会\Apache2.2\htdocs\oplweb\index.php 第10行

从一些基本的谷歌搜索中,看起来我需要打开mod_ldap。看起来很简单。我已经做了以下工作:

  • 转到C:\Program Files\Apache 软件基础\Apache2.2\模块 并确保mod_ldap.so 存在
  • 我进入了C:\程序 文件\Apache软件 基金会\Apache2.2\conf\httpd.conf 并确保这条线不是 注释掉:LoadModule ldap_模块 模块/mod_ldap.so
  • 我进入了一个新的世界 C:\Program Files\PHP\PHP.ini和made 确保此行未被注释掉: extension=php_ldap.dll
  • 重新启动apache
这个问题仍然存在。php中的ldap_connect()函数是否有其他依赖项?我漏了一步吗


干杯

检查您的phpinfo以确保已启用ldap。您应该看到LDAP部分,以及

支持|启用

您可以将php设置为自动启用扩展目录中的任何内容,也可以通过取消注释一行来手动启用它,如下所示:

extension=php_ldap.dll

在php.ini文件中


请记住在启用apache后重新启动它。

如果您连接到Active Directory,您可以使用不需要任何特殊PHP扩展名的此类:

我的Windows Server 2008遇到了同样的问题-您是否已将PHP.ini文件添加到Windows路径


转到控制面板并打开系统图标(开始->设置->控制面板->系统,或仅开始->控制面板->Windows XP/2003+系统)

转到“高级”选项卡

单击“环境变量”按钮

查看“系统变量”窗格

查找路径条目(可能需要滚动才能找到)

双击路径条目

在末尾输入PHP目录,包括“;”之前(例如:C:\php)


按OK

我最近遇到了同样的问题,我在磁盘上搜索了
php.ini
,发现有两个
php.ini
文件,一个在php目录下,另一个在
apache\bin
目录下。我取消了这两个文件中的
扩展名=php_ldap.dll
行的注释,问题就解决了。

对于WAMP,php.ini的工作版本位于apache\bin。
我以前也遇到过同样的问题,直到我在apache\bin中更改了php.ini设置,最后它才起作用。

您的扩展名\u dir在php.ini中设置正确吗?另外,与您的问题无关,您在一个位置使用$ldapconfig[],在另一个位置使用$ldap[]。谢谢,用var names.extension\u dir=“C:\Program Files\php\ext”修复了这个问题-该目录没有可能是问题所在的php_ldap.dll。已下载并添加了该目录,但仍然存在相同的错误。phpinfo中没有ldap部分。它确实显示在apache2handler下的loaded modules部分。此外,我在php.ini文件夹中使用extension=php_ldap.dll启用了它。如果在phpinfo输出中没有看到它,则很可能没有启用它。我认为这是你真正的问题,我同意。但我已经展示了启用它所采取的步骤,似乎没有人能够发现我如何操作的问题。这似乎需要LDAP。它的示例页面返回一个错误,指出PHP中不支持LDAP。很抱歉,我的错,我没有注意到LDAP扩展已安装在我使用的框上。只需运行phpinfo(),它将通知您php.ini的位置。这一点以及在适当的php.ini文件中启用LDAP是最终允许在路径中为me.php工作的原因,而启用LDAP也为我工作。