我之前在本地计算机和目标主机上测试了 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 型”表有以下两种情况: 为 空时有效 *存储数据(有关系)时无效*