2

我之前在本地计算机和目标主机上测试了 Symfony 的 web 应用程序,在两种环境中:prod 和 dev - 都运行良好。所以我在本地计算机上完成了一个里程碑,仍然只在 dev 上进行测试。一切正常。但是 - Doctrine 现在似乎不适用于 prod - 我不知道它为什么以及如何停止工作。

这就是我所看到的——这段代码(来自 DefaultController.php)在 prod 和 dev 上都有效:

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

但这(多一行)仅适用于开发,但不适用于生产:

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

在 prod 中,最后一行导致网页“死亡”。毫无疑问,发生了错误,但我在日志中没有任何消息,当然在 prod env 中 Symfony 是沉默的。我不知道如何解决这个问题......最奇怪的是 prod 早些时候工作正常。

更新:好的,我跟踪了导致工作和不工作的代码部分(但在产品中,在开发中总是有效)。数据库中有一些关系(标记多对一到类别)。这是 Entity/Tag.php 中的这部分代码:

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

有趣的是 Symfony2 对此并不冗长......当我从 Tag.php 中删除它时,我的 webapp 工作正常。如果我将它重新输入到这个文件中,它不会......

更新:经过进一步研究,我可以看到实际上所有的关系都是有问题的(在产品中,而不是在开发中)。我以上述方式向数据库编写了额外的“人工”(用于测试目的)查询,并且都给出了两种效果之一: 当表位于分层依赖关系之上时,一切正常(我们称其为 A 类型) *当表有关系,Symfony 只是停止工作而没有任何消息(我们称之为 B 类型...... *

我还尝试用空表和已完成的表进行测试。“B 型”表有以下两种情况: 为 空时有效 *存储数据(有关系)时无效*

4

1 回答 1

5

在你的app.php改变

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

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

这将使用 prod 环境并启用调试来启动您的应用程序

于 2012-09-05T16:34:29.183 回答