我是 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 演示应用程序加载没有问题。
我运行了 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 位使用了注释。
当我进行 Google 搜索时,我找不到任何明显的东西,并且假设如果我的 PHP 版本确实有问题,这会更常见。
据我所知,我需要:
- 从源代码编译 PHP 以升级到 5.3.8
- 不使用 composer 安装 Symfony2,因为它看起来像安装 MongoDB 包的旧方法不使用注释
- 我完全错过了一些东西,因为我不知道 Symfony2 是如何工作的 :D
有没有人有任何建议或其他更容易的解决方案?如果可以的话,我真的很想坚持使用 Composer。
最佳答案
我不知道 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
关于mongodb - 使用 composer 为 Symfony2 设置 MongoDb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13077845/