【问题标题】:PHP ldap_connect() problemsPHP ldap_connect() 问题
【发布时间】:2012-02-01 23:38:59
【问题描述】:

我正在尝试让 ldap_connect 正常工作。它可以通过 CLI 正常工作,但当我通过浏览器打开我的 php 文件时就不行了。

以下是我认为的相关细节:

  • 错误消息:致命错误:在第 4 行的 F:\Websites\ldap.php 中调用未定义函数 ldap_connect()
  • 操作系统:Windows Server 2008 R2 x64
  • PHP 目录:C:\Program Files (x86)\PHP
  • libeay32.dll 和 ssleay32.dll 已添加到 C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin 和 C:\Windows\System32。它们是从 C:\Program Files (x86)\PHP 复制的。

添加到 httpd.conf 的行:

  • Lo​​adModule php5_module "C:/Program Files (x86)/PHP/php5apache2_2.dll"
  • AddType application/x-httpd-php .php
  • PHPIniDir "C:/Program Files (x86)/PHP"

php.ini 中的变化:

  • extension_dir = "C:/Program Files (x86)/PHP/ext"(路径集)
  • extension=php_ldap.dll(取消注释此行)

我正在拔头发,所以我非常乐意尝试人们提出的任何建议。

【问题讨论】:

  • 你试过重启服务器来重新加载php.ini吗?您的 apache 服务器是否也使用与 cli 相同的 php?
  • 我已经重启了服务器。有没有办法检查?我这里只安装了一个 PHP。
  • 当我通过 CLI 在文件中运行 php_info(并将其输出到文件)时,它似乎与我在浏览器中提取它时不同。
  • 那我就不知道了。你在运行 XAMPP?
  • 我不是。这是在 Windows 上全新安装的 PHP 和 Apache。

标签: php apache ldapconnection


【解决方案1】:

您的 PHP 安装使用两个不同的 ini 文件 - 一个在从命令行运行时,另一个在通过 Apache 运行时。事实证明,它可以在 CLI 中运行,但不能在浏览器中运行。

您可以使用phpinfo()(在浏览器中)并从命令行将-i 标志传递给php,找到这两个文件的路径。在两组输出的顶部附近,您会发现正在使用的 ini 文件的路径,如果它们相同,我会感到非常惊讶。在命令行中,您可以通过传递--ini 标志来获取更详细的信息。

您收到Call to undefined function ldap_connect() 的事实仅意味着未加载 LDAP 扩展,这只能通过 Apache 而不是通过 CLI 如果他们使用两个不同的 ini 文件.

【讨论】:

  • 抱歉耽搁了。我在上班的时候发了这个,回家后忘记检查了。通过带有 -i 标志的 cli 运行 php 的输出将其显示为路径:Loaded Configuration File => C:\Program Files (x86)\PHP\php.ini php_info() 将其显示为路径:Loaded Configuration File C: \Program Files (x86)\PHP\php.ini 我是疯了还是一样?
【解决方案2】:

我现在觉得很傻。问题在于将我的 PHP 目录添加到 PATH 环境变量中。我不是 100% 确定为什么它解决了这个问题,但这就是最终的结果。谢谢你们的帮助,伙计们!

【讨论】:

    猜你喜欢
    • 2011-04-17
    • 2019-08-11
    • 1970-01-01
    • 2018-01-12
    • 2010-09-10
    • 2011-10-12
    • 2010-10-10
    • 2011-10-24
    • 2014-05-17
    相关资源
    最近更新 更多