3

我对 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 应用程序(这只是演示应用程序)时,我收到以下错误:

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 位使用注释。

当我进行谷歌搜索时,我找不到任何明显的东西,并假设如果我的 PHP 版本真的有问题,这会更常见。

据我所知,我需要:

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

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

4

2 回答 2

9

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

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

将以下内容添加到您的 config.yml(从此处复制):

# app/config/config.yml
doctrine_mongodb:
    connections:
        default:
            server: mongodb://localhost:27017
            options: {}
    default_database: test_database
    document_managers:
        default:
            auto_mapping: true
于 2012-10-26T14:57:58.640 回答
0

Symfony 与通过 composer 安装的 DoctrineMongoDBBundle 配合得很好。使用 composer 安装依赖项是最佳实践。

您必须将您的 php更新到 5.4。

于 2012-10-27T12:22:38.750 回答