私は以前、両方の環境(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つのケースがあります。 空の場合は機能します *データが(リレーション付きで)格納されている場合は機能しません*