为什么Symfony2设置了error_reporting?

时间:2012-11-28 10:30:59

标签: symfony

我一直在尝试删除E_NOTICE和E_STRICT错误级别以避免此错误:

Runtime Notice: Only variables should be passed by reference

我尝试修改php.ini但没有用,error_reporting总是-1。然后我尝试在当前操作中动态设置它,并且工作正常。然后我也在app_dev.php的第一行尝试了相同的操作并且没有用。这意味着Symfony2正在某处动态设置它。

我该怎么办?

修改

对于那些不熟悉错误的人:

$user = $this->('security.context')->getToken()->getUser();

$first = reset($user->getRoles()); // error

$roles = $user->getRoles();
$first = reset($roles); // works fine

2 个答案:

答案 0 :(得分:2)

虽然通知不是“延迟”,但在其他情况下这是一个合理的问题:这是在内核实例中设置的,在app_dev.php(或app.php)中实例化。

构造的第二个参数是布尔调试标志,如果trueerror_reporting设置为-1而display_errors设置为1,否则默认值分别为0。

$kernel = new AppKernel('dev', false);

symfony documentation

希望这有帮助。

答案 1 :(得分:2)

我在以下场景中遇到了同样的错误,即

<强>情境: 我丢失了现有LIVE项目的开发环境。但我从GIT repo获得了整个代码,然后在我的新开发环境中安装了symfony 2.4.2(与LIVE站点相同的版本)。然后我发现在LIVE站点上工作的Web应用程序页面在我的新DEV环境中被破坏了。

<强>解决方案: 我花了很多时间来解释问题的原因然后我发现了,即

当我在开发环境中使用composer.phar安装symfony 2.4.2时,它在我的开发环境中创建了一个新的 web / app_dev.php 文件,它有以下条目将其关闭即

<强>调试::启用()

只需评论上述行,然后关闭php通知,然后修复给我通知的所有页面。

我希望这会对像我这样有同样问题的人有所帮助。祝你好运!

干杯。

PS:但我建议你在新的开发项目中启用上面这一行,这样你就可以看到PHP通知,然后在开发过程中删除它们。