【问题标题】:Autoload configuration doesn't load MongoDB classes自动加载配置不加载 MongoDB 类
【发布时间】:2012-12-22 10:33:50
【问题描述】:

我在 MAC OSX 10.8.2 上使用 PHP 5.3 安装了 MAMP 1.9 我安装了 MongoDB 和 PHP 扩展 mongo.so 并将其添加到我的 php.ini 中。

我可以在控制台上运行 MongoDB,我的 phpinfo 说 MongoDB 支持已启用,但我无法运行以下 PHP 脚本。

<?php $connection = new MongoClient(); ?>

PHP 出现致命错误:

Class 'MongoClient' not found

我的 MAMP(或扩展安装)的自动加载配置似乎有问题。

【问题讨论】:

  • 你重启了 Apache 吗?您是否将扩展名添加到 Apache 目录中的 php.ini 文件?
  • 是的,当然,phpinfo 说它已启用——我认为这不是 MongoDB 问题,我相信 PHP 根本找不到 Mongo 类的包含路径——顺便说一句:这些通常在哪里?
  • 奇怪的是如果我运行这个...$connection = new Mongo();...它说:Fatal error: Uncaught exception 'MongoConnectionException' with message 'connecting to failed: Invalid argument' in /Applications/MAMP/htdocs/mongo.php:4 Stack trace: #0 /Applications/MAMP/htdocs/mongo.php(4): Mongo->__construct() #1 {main} thrown in /Applications/MAMP/htdocs/mongo.php on line 4这不是意味着 PHP 知道 Mongo 类在哪里吗?
  • echo extension_loaded("mongo") ? "loaded\n" : "not loaded\n";exit; 提示“已加载”。感觉是版本问题。我读到 MongoClient 是 2012 年 11 月添加的一个类。
  • 是的,您使用的是旧版本的驱动程序,不幸的是,文档已被仅替换为新版本...扩展应该可以通过 pecl 升级

标签: php mongodb mamp


【解决方案1】:

正如 Sammaye 在上面的 cmets 中提到的,看起来您只是在运行旧版本的驱动程序。您可以通过转储Mongo::VERSIONphpversion('mongo') 的返回值来获取当前版本。通过PECL安装/升级驱动的说明也是documented;但是,我们在 GitHub 上不再提供预编译版本(尽管我们最近开始将 Windows 构建发布到 S3,但 GitHub 很快将删除存储库下载)。

【讨论】:

  • 谢谢,是的,是驱动版本问题。
【解决方案2】:

我遇到了同样的问题,因为我更改了错误的 php.ini 文件。所以我运行了以下命令

echo phpversion('mongo');

并采用 Loaded Configuration File 即 /Applications/MAMP/bin/php/php5.4.4/conf/php.ini 并更改它。

重新启动 Apache,它工作正常。耶!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2023-01-31
    • 2014-08-15
    • 2016-04-26
    • 1970-01-01
    相关资源
    最近更新 更多