使用composer为Symfony2设置MongoDb

时间:2012-10-25 21:48:59

标签: mongodb symfony annotations

我是Symfony2的新手,我已经按照Symfony2网站上的指南使用composer安装了MongoDb Doctrine包(这也是我安装Symfony2的方法)

http://symfony.com/doc/master/bundles/DoctrineMongoDBBundle/index.html

我将这些行添加到app / autoload.php中:

use Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver;
AnnotationDriver::registerAnnotationClasses();

和app / AppKernal.php

new Doctrine\Bundle\MongoDBBundle\DoctrineMongoDBBundle(),

指南中提到的,但是当我尝试加载Symfony应用程序(这只是Demo应用程序)时,我收到以下错误:

InvalidArgumentException: The service definition "doctrine_mongodb.odm.document_manager" does not exist.

[还有更多的痕迹,让我知道这是否有用]

如果我注释掉我添加到app / AppKernal.php的行,那么Symfony Demo应用程序会加载而没有任何问题。

我已经运行了app / check.php,我注意到以下警告:

WARNING  When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156
          Install PHP 5.3.8 or newer if your project uses annotations.

我目前正在使用Ubuntu(5.3.5-1ubuntu7.11)附带的PHP版本,看起来上面的composer / mongodb位使用Annotations。

当我进行谷歌搜索时,我找不到任何明显的东西,并认为如果我的PHP版本确实存在问题,这将更常见。

据我所知,我需要:

  • 从源代码编译PHP以升级到5.3.8
  • 不使用composer安装Symfony2,因为看起来安装MongoDB软件包的旧方法不使用注释
  • 我完全错过了一些东西,因为我不知道Symfony2是如何工作的:D

有没有人有任何建议或其他解决方案更容易?如果可以的话,我真的很想坚持作曲家。

2 个答案:

答案 0 :(得分:9)

我不知道PHP版本(可能存在问题,但是你得到的错误没有明确说明它),但你的问题是config.yml中缺少的配置。

即使您现在不使用该服务,也必须添加此项。它甚至不必是有效的信息,它必须存在。

将以下内容添加到config.yml(从here复制):

# app/config/config.yml
doctrine_mongodb:
    connections:
        default:
            server: mongodb://localhost:27017
            options: {}
    default_database: test_database
    document_managers:
        default:
            auto_mapping: true

答案 1 :(得分:0)

Symfony适用于通过composer安装的DoctrineMongoDBBundle。使用composer安装依赖项是最佳实践。

你必须update你的php为5.4。