Laravel 4:找不到“MongoClient”类

时间:2014-06-16 20:36:49

标签: php mongodb laravel

我在WAMP上安装了Laravel 4,它与MySQL后端配合得很好。

我已成功设置第二个虚拟主机,并希望使用MongoDB后端。在搜索之后我发现Laravel本身并没有连接到MongoDB而且我找到了https://github.com/jenssegers/Laravel-MongoDB并且我一直试图设置它,但我似乎无法做到正确。显然我一定是做错了什么,我希望有人可以帮我确定一下我做得不对。

我根据说明编辑了composer.json

............
"license": "MIT",
"require": {
    "laravel/framework": "4.1.*",
    "jenssegers/mongodb": "*"
},
"autoload": {
.........

然后我跑了composer update。它安装了monolog 1.9.1和swiftmailer v5.2.0 - 无论这些是什么 - 成功(几天前)但之后又抛出了一个错误。今天我尝试再次运行composer update,并将它们分别更新为1.10.0和v5.2.1,然后遇到了同样的错误。现在,当我尝试composer update时,它会一直抛出相同的错误:

Nothing to install or update
Generating autoload files
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","me
ssage":"Class 'MongoClient' not found","file":"C:\\wamp\\www\\laravel\\vendor\\j
enssegers\\mongodb\\src\\Jenssegers\\Mongodb\\Connection.php","line":132}}Script
 php artisan clear-compiled handling the post-update-cmd event returned with an
error  


  [RuntimeException]
  Error Output:    


update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock]
 [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--with-
dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [packages1] ... [
packagesN]

我尝试了什么

我已经下载并安装了php_mongo.dll,方法是将它放在php ext文件夹中并在php.ini中启用它:

; added for mongoDB connections
extension=php_mongo.dll

但这没有帮助。

2 个答案:

答案 0 :(得分:8)

注意:如果没有@Hassan的帮助,我无法完全解决问题 - 请参阅@Hassan的答案下的评论。

我会提供这个答案,希望它可以帮助可能遇到同样问题的其他人。我认为最好把它作为答案,以便它突出。

进一步搜索引导我:https://github.com/jenssegers/Laravel-MongoDB/issues/36 然后在这里:https://github.com/leroy-merlin-br/mongolid-laravel#troubleshooting
以下命令和输出表明我应该使用php.ini扩展名更新的php_mongo.dll的位置:

$ php -i | grep 'Configuration File'
Configuration File (php.ini) Path => C:\Windows
Loaded Configuration File => C:\wamp\bin\php\php5.5.12\php.ini

WAMP托盘图标指向C:\wamp\bin\apache2.4.9\bin\php.ini - 这是我更新的内容。我还检查了CLI环境中的PHP是否通过运行以下命令正确导入驱动程序,并显示输出:

$ php -i | grep 'Mongo'
MongoDB Support => enabled

更新了正确的php.ini后,我restarted apache再次尝试composer update。错误是不同的 - 身份验证 - 因为用户名,密码和数据库是错误的。一旦纠正,更新就完成了。

答案 1 :(得分:3)

你的作曲家文件看起来很好,就像其他一切一样。尝试使用文档中的“composer dumpautoload”:

  

如果由于类图包中的新类而需要更新自动加载器,则可以使用“dump-autoload”来执行此操作,而无需进行安装或更新。

这应该可以解决该错误,之后您需要在app/config/database.php中更改适配器以使用mongodb,如下所示:

'default' => 'mongodb',

并将mongodb添加到您的连接中:

'connections' => array(
...
    'mongodb' => array(
        'driver'   => 'mongodb',
        'host'     => 'localhost',
        'port'     => 27017,
        'username' => '',
        'password' => '',
        'database' => 'test'
    ),
),