2012-10-25 223 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。