我之前在本地计算机和目标主机上测试了Symfony的web应用程序:prod和dev都运行良好。所以我在本地电脑上完成了一英里石的测试,仍然只在dev上测试。一切都很好。然而,学说现在似乎不起作用了,我不知道它为什么以及如何停止作用。
以下是我所看到的——这段代码(来自DefaultController.php)同时用于prod和dev:
$tags = $this->getDoctrine()
->getRepository("MyWebBundle:Tag");
但这(还有一行)只适用于dev,而不适用于prod:
$tags = $this->getDoctrine()
->getRepository("MyWebBundle:Tag")
->find(1);
在戳中最后一行对网页造成"死亡"。毫无疑问,发生了错误,但我在日志中没有任何消息,当然在产品环境中Symfony是静音的。我不知道如何处理这个问题。。。最奇怪的是,刺激早些时候起了作用。
更新时间:好吧,我追踪了代码中区分工作和不工作的部分(但在prod中,在dev中总是有效的)。数据库中存在一些关系(将多对一标记为类别)。这是Entity/Tag.php中的这部分代码:
/**
* @ORMManyToOne(targetEntity="Category")
* @ORMJoinColumn(name="id_category", referencedColumnName="id_category", nullable=true)
*/
protected $category;
有趣的是,Symfony2对此并不冗长。。。当我从Tag.php中删除它时,我的网络应用程序就可以工作了。如果我把它重新键入这个文件,它不会。。。
更新时间:经过进一步的研究,我发现实际上所有的关系都是有问题的(在prod中,而不是在dev中)。我以上述方式向数据库编写了额外的"人工"(出于测试目的)查询,所有查询都会产生以下两种效果之一:当表位于层次依赖项之上时,一切都正常(我们称之为A类型)*当表有关系时,Symfony就停止工作,没有任何消息(让我们称之为B类型…*
我还试着用空表和满表做一个测试。"B型"表中有两种情况:为空时有效*当数据被存储(带有关系)时,它不起作用*
在app.php
中更改
$kernel = new AppKernel('prod', false);
至
$kernel = new AppKernel('prod', true);
这将使用prod环境和启用的调试引导您的应用程序