3

私はSymfony2に非常に慣れていないので、Symfony2 Webサイトのガイドに従って、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に同梱されているPHPバージョン(5.3.5-1ubuntu7.11)を使用していますが、上記のcomposer/mongodbビットはアノテーションを使用しているようです。

私がグーグル検索をするとき、私は明白なものを何も見つけることができません、そしてそれが私のPHPバージョンで本当に問題であるならば、これがより一般的であると思いました。

私が言えることから、私は次のいずれかを行う必要があります。

  • PHPをソースからコンパイルして5.3.8にアップグレードします
  • MongoDBバンドルをインストールする古い方法はアノテーションを使用しないように見えるため、composerを使用せずにSymfony2をインストールします
  • 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 に答える