我在将 Symfony 从 2.1 升级到 2.2 后遇到了问题。一次运行所有功能测试时(请注意,在运行单个测试时不会发生这种情况,无论如何)我收到一个错误,无限循环卡在
PHP Fatal error: Maximum function nesting level of '150' reached, aborting! in project_path\vendor\symfony\symfony\src\Symfony\Component\ClassLoader\DebugClassLoader.php on line 81
部分跟踪:
...
14. Symfony\Component\BrowserKit\Client->submit() project_path\other_path\Tests\Controller\LoginControllerTest.php:53
15. Symfony\Component\BrowserKit\Client->request() project_path\vendor\symfony\symfony\src\Symfony\Component\BrowserKit\Client.php:224
16. Symfony\Bundle\FrameworkBundle\Client->doRequest() project_path\vendor\symfony\symfony\src\Symfony\Component\BrowserKit\Client.php:264
17. Symfony\Component\HttpKernel\Client->doRequest() project_path\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Client.php:111
18. Symfony\Component\HttpKernel\Kernel->handle() project_path\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Client.php:61
19. Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel->handle() project_path\app\bootstrap.php.cache:411
20. Symfony\Component\HttpKernel\HttpKernel->handle() project_path\app\bootstrap.php.cache:1101
21. Symfony\Component\HttpKernel\HttpKernel->handleRaw() project_path\app\bootstrap.php.cache:975
22. Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher->dispatch() project_path\app\bootstrap.php.cache:990
23. Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() project_path\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher.php:135
24. Symfony\Component\EventDispatcher\EventDispatcher->dispatch() project_path\vendor\symfony\symfony\src\Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher.php:167
25. Symfony\Component\EventDispatcher\EventDispatcher->doDispatch() project_path\vendor\symfony\symfony\src\Symfony\Component\EventDispatcher\EventDispatcher.php:53
26. call_user_func() project_path\vendor\symfony\symfony\src\Symfony\Component\EventDispatcher\EventDispatcher.php:164
27. Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher->Symfony\Component\HttpKernel\Debug\{closure}() project_path\vendor\symfony\symfony\src\Symfony\Component\EventDispatcher\EventDispatcher.php:164
28. call_user_func() project_path\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher.php:447
29. Symfony\Component\Security\Http\Firewall->onKernelRequest() project_path\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher.php:447
30. Symfony\Component\Security\Http\Firewall\AbstractAuthenticationListener->handle() project_path\vendor\symfony\symfony\src\Symfony\Component\Security\Http\Firewall.php:66
31. Symfony\Component\Security\Http\Firewall\AbstractAuthenticationListener->onSuccess() project_path\vendor\symfony\symfony\src\Symfony\Component\Security\Http\Firewall\AbstractAuthenticationListener.php:143
32. Symfony\Component\ClassLoader\DebugClassLoader->loadClass() project_path\vendor\symfony\symfony\src\Symfony\Component\Security\Http\Firewall\AbstractAuthenticationListener.php:0
33. Symfony\Component\ClassLoader\DebugClassLoader->findFile() project_path\vendor\symfony\symfony\src\Symfony\Component\ClassLoader\DebugClassLoader.php:95
...
在我升级所有测试之前工作正常,现在他们在使用时抛出该错误:
$form = $crawler->selectButton('Login')->form();
$form['_password'] = '123ASDasd';
$form['_username'] = 'MattKing';
$crawler = $client->submit($form); //this is LoginControllerTest.php:53 from error above
或者
$link = $crawler->selectLink('Matt King')->link();
$client->click($link); // --> error
或者
$client = static::createClient();
$client->followRedirects(true);
$crawler = $client->request('GET', '/login'); // --> error
另一个问题是在使用默认的 symfony 翻译功能时。切换用户的语言环境后 - 测试抛出与上述相同的错误。当我注释掉切换语言环境时,发生了其他错误(如上面的错误)。请注意,它可能是由与上述相同的问题引起的。
找了几天的理由,放弃了。知道如何解决这个问题吗?