2012-10-25 82 views
3

为Symfony2中建立的MongoDB我很新的Symfony2的,我也跟着Symfony2的网站上的指导安装使用作曲家MongoDB的学说束(这也是我怎么装的Symfony2)使用作曲家

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

我增加了线到应用程序/ autoload.php:

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

和应用程序/ AppKernal.php

new Doctrine\Bundle\MongoDBBundle\DoctrineMongoDBBundle(), 

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

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

[还有很多很多痕迹,让我知道如果这将是有益的]

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

我已经运行的应用程序/ 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版本,它看起来像作曲家/ mongodb位使用注释。

当我执行Google搜索时,我找不到任何明显的东西,并认为如果它真的是我的PHP版本的问题,那么这会更常见。

从我可以告诉我将需要:

  • 编译PHP从源代码升级到5.3.8
  • Symfony2中不使用安装作曲,因为它看起来像安装的老办法MongoDB的包不使用注释
  • 我已经完全错过了一些东西,因为我不知道Symfony2的工作原理是:d

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

+0

将Ubuntu升级到12。10 - 它带有PHP 5.4。或者 - 如果您现在无法做到这一点 - 请使用[这一个]的PHP PPA(https://launchpad.net/~ondrej/+archive/php5/)。 –

+2

您是否向config.yml文件添加了必要的配置? – weyandch

+0

我没有向config.yml添加任何东西,但我还没有尝试连接到任何数据库,我确实只是加载了Demo页面,我还没有写任何Symfony代码。 – Joanne

回答

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 
+0

真棒,已修复它。非常感谢!获得的教训,总是完成一个指导到最后! – Joanne

+0

每个软件包定义了必须设置的配置参数。如果Doctrine ODM定义必须有一个比symfony定义的连接将会失败,如果不是这样的话。 – Sgoettschkes

0

Symfony的效果很好通过作曲家安装DoctrineMongoDBBundle。使用作曲家来安装依赖关系是最佳实践。

你必须update你的PHP到5.4。