【问题标题】:PHP Startup Unable to load dynamic library php_mongo.dllPHP启动无法加载动态库php_mongo.dll
【发布时间】:2014-08-01 08:05:06
【问题描述】:

我是这方面的初学者。我正在尝试在 php 上安装 mongodb 驱动程序。

Platform: Windows 8.1 64bit.
PHP 5.5.9
Apache/2.4.7

按照这里的说明进行操作:http://php.net/manual/en/mongo.installation.php#mongo.installation.windows

我已经用 VC11 尝试了所有 php_mongo.dll 文件并放入 php/ext 文件夹。并在 php.ini 文件中添加了extension=php_mongo.dll,但是当我尝试在 xampp 控制器中启动 apache 时出现错误。

    Php Startup: Unable to load dynamic library
  'C:\xampp\php\ext\php_mongo.dll' -%1 is not a valid Win32 application.

我已经在 phpinfo() 中检查了我的 VC 编译器版本,并在 MSVC11architecture: x86 中进行了说明。

如果有人可以帮助我,那就太好了。 谢谢。欣赏它。

【问题讨论】:

    标签: php mongodb dll


    【解决方案1】:

    确保为您的 PHP 安装下载正确的 .DLL。很有可能您正在运行 apache x86,因此请下载 x86 php_mongo.dll。此外,如果您将 PHP 作为 Apache 模块运行,请确保选择 thread safe (ts) 并选择与您正在运行的 PHP 版本匹配的这种类型的 dll

    版本必须匹配,否则会出现 php 启动错误。找到这些 Mongo DLL here

    我这样做了,然后我得到一个错误libsasl.dll not found。我只是将我的 PHP 安装目录中的libsasl.dll 复制到了Apache 安装目录(在其中找到了httpd.exe)。然后我重新启动了我的 Apache,它工作了!

    【讨论】:

    • 这里的诀窍确实是将php文件夹中的libsasl.dll复制到apache二进制文件夹中
    • 是的。将 libsasl.dll 复制到 apache bin 目录即可解决问题。
    • @Bryan KIm 你能帮我解决这个问题吗stackoverflow.com/questions/30910162/…
    • 它没有帮助。我仍然收到错误,但我可以看到 phpinfo() 中加载了 mongo
    • “确保你选择线程安全 (ts) 的,并且选择与你正在运行的 PHP 版本相匹配的这种类型的 dll。”是的!
    【解决方案2】:

    对于在 2017 年搜索此内容的任何人,PECL 包已更新,现在可在 http://pecl.php.net/package/mongodb/1.2.9/windows 找到

    并使用:

    extension=php_mongodb.dll 
    

    代替:

    extension=php_mongo.dll
    

    【讨论】:

      【解决方案3】:

      C:\xampp\php\libsasl.dll复制到C:\xampp\apache\bin\,重启Apache即可享受。

      【讨论】:

      • 它没有帮助。我仍然收到错误,但我可以看到 phpinfo() 中加载了 mongo
      • 它对我有用,尽管 C:\xampp\apache/bin 中已经有一个“libsasl.dll”可用。我刚刚将副本从 C:\xampp\php\libsasl.dll 替换为 C:\xampp\apache\bin\ 就成功了
      【解决方案4】:

      完成前面 cmets 中提到的所有步骤后,xampp 可能无法加载“.dll”文件。只需确保将“.dll”文件的文件夹路径作为系统变量路径添加到环境变量中即可。

      我遇到了同样的问题,然后将“.dll”文件的文件夹的路径添加到环境变量作为系统变量路径后,它就起作用了。然后它能够​​找到该文件。

      最后,这是停止 xampp 加载“.dll”文件的唯一步骤,尽管它存在于该文件夹中。人们经常会错过这一步,因为它没有明确指出。

      【讨论】:

        【解决方案5】:

        这通常是因为我们使用 64 位支持的 DLL 文件 64 位系统。但是 wamp/xampp 架构可能是 32 位的。我们需要使用基于 wamp/xampp 架构而不是 windows 架构。因此,尝试找到与 wamp/xampp 架构相关的 DLL 文件版本。以下链接中的解决方案对我来说就像一个魅力,

        http://grokbase.com/t/gg/mongodb-user/151xpk3fkr/php-5-6-3-with-mongodb-driver-unable-to-load-dynamic-library-not-a-valid-win32-application

        此链接可帮助您找到 wamp/xampp 架构,https://stackoverflow.com/a/22454865/4874281

        【讨论】:

        • 是的,bitnami wamp 原来是 32 位的。不敢相信这有效。
        【解决方案6】:

        如果您在执行上述操作后仍然遇到问题,请尝试使用旧版本的驱动程序。

        这就是我在 Windows 8 上的 XAMPP/PHP 5.5 的工作原理。

        老司机可以在这里找到:https://s3.amazonaws.com/drivers.mongodb.org/php/index.html

        可以在这里找到新的驱动程序:http://pecl.php.net/package/mongo/1.5.5/windows

        您可能还想访问:https://serverfault.com/questions/563867/mongodb-unable-to-load-driver-on-php

        【讨论】:

        • pecl mongo 1.5.5 的新驱动程序链接对我有用。
        【解决方案7】:

        我的 PHP 版本是 7.2.3 x86

        去这个网站,根据php版本选择DLL:

        https://pecl.php.net/package/mongodb/1.4.2/windows

        并在 php.ini 中设置

        extension=mongodb
        

        【讨论】:

          猜你喜欢
          • 2015-12-11
          • 2019-04-03
          • 2015-03-01
          • 2021-04-03
          • 2020-03-16
          • 2016-11-27
          • 2021-10-05
          • 2020-02-26
          • 2016-10-09
          相关资源
          最近更新 更多