Symfony 2不能执行单个控制台命令,也没有正确的错误


Symfony 2 can't do single console command and no proper error

我已经在Symfony2项目上工作了一段时间,它看起来非常好。但是,为了节省一些时间,最近我一直在编程,而没有实际测试功能。显然,我也没有把它推到现场环境。

现在我正在尝试启动内置的 PHP 服务器以在本地运行我的项目,以查看我通过盲目编码破坏了什么......好吧,我一定是弄坏了什么大东西。

app/console server:start

挂起几秒钟,最后出现错误:

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

就是这样。控制台中实际上没有其他内容。它没有说明我在哪里犯了错误,无论是在我的代码中(没有类名,没有行)还是其他地方......这就像大海捞针。

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

所有其他命令,例如尝试清除缓存,尝试验证我的学说模式等,都会产生完全相同的结果。日志中也没有任何东西。甚至在/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

起初我很困惑,因为这不是我自己编辑的文件。但是在挠了几下头之后,我发现我的一个事件侦听器有代码:

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

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

当你使用CLI时,你没有使用Apache,所以不应该有任何错误结束。您可以更改详细级别http://symfony.com/doc/current/components/console/introduction.html#verbosity-levels