Symfony 2无法执行单一控制台命令,也没有正确的错误

时间:2016-03-16 16:55:54

标签: php symfony logging

我在Symfony2项目上工作了很长时间,看起来非常好。 但是,为了节省一些时间,我在没有实际测试功能的情况下进行了很多编程。显然,我也没有把它推到现场环境中。

现在我试图启动内置的PHP服务器来在本地运行我的项目,看看我通过盲目编码打破了什么......好吧,我必须已经破坏了一些东西。

app/console server:start

挂了几秒钟,最后我收到一个错误:

[Symfony\Component\Debug\Exception\ContextErrorException]  
Warning: Invalid argument supplied for foreach()

那就是它。控制台里几乎没有其他内容。它没有说出我犯了错误的地方,是否在我的代码中(没有类名,没有行)或其他地方......这就像大海捞针一样。

我已尝试使用 - 强力标志运行它,因为它只是一个警告,也许它可以继续并在以后再次崩溃(并给我一个正确的理由然后),但我得到了同样的错误。

所有其他命令,例如尝试清除缓存,尝试验证我的学说模式等,都会产生完全相同的结果。日志中也没有。甚至不在/ var / logs / apache2中。

我已手动清除缓存并尝试再次运行服务器,看看是否会显示不同的错误。它设法创建一个文件夹结构:

.
└── dev
    ├── annotations
    ├── classes.map
    ├── jms_aop
    ├── jms_security
    └── serializer

但是没有设法在这些文件夹中放置任何内容。所以我认为我很快就会收到错误。

我在这里寻找一个大海捞针......我已经查看了我的代码,弄清楚我是否在我的foreach循环中犯了一个愚蠢的错误但我不明白任何东西。

有什么办法可以从Symfony获得更多调试信息吗?一个简单的类名或行可以帮助我弄清楚潜在的原因是什么,但这只是疯狂。我甚至不知道从哪里开始。

更新

@JimL向我指出我可以增加控制台命令输出的详细程度。

通过将 -vvv 添加到输出中,我设法获得了异常的完整堆栈跟踪。一旦我看到最后一行:

/Users/A Sneaky Ginger/path/to/my/project/vendor/jms/serializer-bundle/JMS/SerializerBundle/DependencyInjection/Compiler/RegisterEventListenersAndSubscribersPass.php:48
起初我很困惑,因为这不是我自己编辑过的文件。但经过几次划痕后,我可以发现我的一个EventListener有代码:

static public function getSubscribedEvents()
{
    //return array(
        //array("event" => "serializer.post_serialize", "class" => "Acme\myBundle\Entity\myEntity", "method" => "onPostSerialize")
    //);
}

导致给foreach()的无效参数。 我仍然认为默认情况下可以在警告信息中包含一些小提示,因为这实在太模糊了,但幸运的是JimL救了这一天。

1 个答案:

答案 0 :(得分:0)

当您使用CLI时,您不使用Apache,因此不会出现任何错误。您可以更改详细级别 http://symfony.com/doc/current/components/console/introduction.html#verbosity-levels