2

私は以前、両方の環境(prodとdev)のローカルコンピューターとターゲットホストの両方でSymfonyのWebアプリをテストしましたが、どちらも正常に機能しました。それで、私はローカルコンピューターでマイルストーンを完成させましたが、それでも開発者だけでテストしました。すべてが正常に動作します。しかし、-Doctrineは現在prodで機能していないようです-そして、なぜ、どのように機能しなくなったのかわかりません。

これが私が見るものです-このコード(DefaultController.phpから)はprodとdevの両方で機能しています:

    $tags = $this->getDoctrine()
            ->getRepository("MyWebBundle:Tag");

しかし、これ(もう1行)はdevでのみ機能し、prodでは機能しません。

    $tags = $this->getDoctrine()
            ->getRepository("MyWebBundle:Tag")
            ->find(1);

製品では、最後の行がWebページに「死ぬ」原因になります。エラーが発生したことは間違いありませんが、ログにメッセージはありません。もちろん、prodenvではSymfonyはサイレントです。この問題にどのように取り組むかわかりません...最も奇妙なことは、prodが以前に適切に機能したことです。

更新:わかりました。動作する場合と動作しない場合の違いをもたらすコードの部分をトレースしました(ただし、prodでは、devでは常に機能します)。データベースにはいくつかの関係があります(多対1からカテゴリへのタグ付け)。Entity/Tag.phpのコードのこの部分は次のとおりです。

/**
* @ORM\ManyToOne(targetEntity="Category")
* @ORM\JoinColumn(name="id_category", referencedColumnName="id_category", nullable=true)
*/
protected $category;

Symfony2が冗長ではないのは興味深いことです...Tag.phpから削除すると、Webアプリが機能します。このファイルに再入力しても、...

更新:さらに調査したところ、実際にはすべての関係に問題があることがわかりました(開発ではなく、製品で)。私はデータベースに追加の「人工」(テスト目的)クエリを書きました-上記のように、すべてが2つの効果のいずれかを与えます: テーブルが階層的な依存関係の上にあるとき、すべてが機能します(それをAタイプと呼びましょう) *テーブルのとき関係があり、Symfonyはメッセージなしで動作を停止します(Bタイプと呼びましょう... *

また、空のテーブルと満たされたテーブルでテストを試みました。「Bタイプ」テーブルでは、次の2つのケースがあります。 空の場合は機能します *データが(リレーション付きで)格納されている場合は機能しません*

4

1 に答える 1

5

あなたのapp.php変化で

$kernel = new AppKernel('prod', false);

$kernel = new AppKernel('prod', true);

これにより、prod環境とデバッグが有効になっているアプリケーションが起動します

于 2012-09-05T16:34:29.183 に答える