重複の可能性:
Symfony2でImagickを使用していますか?
私はSymfonyを初めて使用するので、これはダミーの質問かもしれません。しかし、グーグルの数時間後、私は関連する答えを見つけられなかったので、ここで試してみる価値があるかもしれません。
つまり、基本的には、Windows、Apache、純粋なPHP、Mongodb、および「raw」PHP_Mongodb PECLドライバー(ここでは「raw」という単語は、Symfony2のDoctrine Mongodb ODMバンドルとは異なるために使用されます)をWebアプリケーション開発に使用していました。PECLドライバーは完全に正常に機能し、次のように書くことができます。
<?php
$m = new Mongo();
$db = $m->myDB;
$db->find();
//Do Other DB Operations.
上記のコードは、標準の手順に従い、php.iniでPECLドライバー拡張機能をセットアップしたため、「use」、「include」、または「require」ステートメントがなくても正常に機能しました。Webブラウザーでphpinfo()を表示すると、Mongodbドライバー情報が正しく表示されます。すべてが完璧です。
次に、Symfony2を使い始めます。これは、URLの書き換え、MVCパターン、セキュリティ、その他の便利な機能を提供するためです。Doctrine Mongodb ODMバンドルは、PHPオブジェクトのみを永続化できることを除いて、うまく機能します。私のプロジェクトにはたくさんのjavascriptオブジェクトがあり、その上に「PHPラッパー」を置く以外にそれを行う方法はありません(そのjavascriptオブジェクトのみを含むPHPオブジェクトを作成するため)。
古き良きPECLトリックを使用して、上記と同じコードブロックでデータベースと通信しようとすると、次のエラーが発生しました。
Fatal error: Class 'MyProject\Controller\Mongo' not found in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Symfony\src\MyProject\Controller\DefaultController.php on line 47.
Symfony2は、自動クラスローダーを探しているだけで、php.iniの拡張パスをブロックまたは上書きしたようです。その拡張機能を含めるには、autoload.phpやAppKernel.phpを変更する必要があると思いますか?ここで何が起こっているのか理解するのを手伝ってください。Symfony2でPECLドライバーを使用できますか?それとも、Doctrine Mongodb ODMがSymfony2のデータベースにアクセスする唯一の方法ですか?ありがとう!